7.25号课程总结

1.关键字:package  一般为域名的倒写,特别的,org....一般有特定领域的(教育,。。)

import 导入包    一般用通配符*可全部倒入下一层包的所有文件,但仅限一层;

不导入包的写法:such as 

//java.util.Date.date = new java.util.Date();不知道为好

java.lang包不用导入

2.修饰符default,不写默认是default

方法的重载——作用于方法,与原方法必须同名仅仅是参数上的区别:有两个方面:参数数据类型和参数数据个数

方法的重写——同上区别,与原方法同名且同参,包括参数数据类型和个数的一致

3.构造方法:new时调用  不自己定义系统有默认的构造方法,无参的

Java特性之一——封装性:比如set/get(快捷键Ctrl+s)方法,对外只提供接口

4.子类的实例化:先调用父类的构造方法,在调用子类(自己的)

Car car = new mycar()    //父类引用指向子类对象,详情画出内存图

5.Java为什么只能单继承?怎样实现多继承?

答:为了使结构不发生混乱,本质上是因为

从技术的角度来说,是为了降低复杂性。例如,A类中有一个m方法,B类中也有一个m方法。如果C类单独继承A类或者B类时,C类中的m方法要么继承于A类,要么继承于B类。

而如果多重继承的话,C类的m方法有可能来自A类,又有可能来自B类,就会造成冲突。这样的继承关系,就会增加复杂性,甚至进一步影响多态的灵活性。

实现多继承,技术上用的是多态

Java明确定义,一个子类只能有一个直接的父类,不允许有多个。

即是:a extends b extends c extends D.........

不允许:a extends b,c,D........

内部类可以实现多继承,for example:

classExample1 {publicString name()

{return"liutao";

}

}classExample2 {publicintage()

{return25;

}

}classMainExample

{privateclasstest1extendsExample1

{publicString name()

{returnsuper.name();

}

}privateclasstest2extendsExample2

{publicintage()

{returnsuper.age();

}

}publicString name()

{returnnewtest1().name();

}publicintage()

{returnnewtest2().age();

}publicstaticvoidmain(String args[])

{

MainExample mi=newMainExample();

System.out.println("姓名:" +mi.name());

System.out.println("年龄:" +mi.age());

}

}

6.eclipse快捷键

补全代码:Alt+/

构造函数:Ctrl+s

整段注释:Ctrl+shift+/       取消注释:Ctrl+shift+\

7.基本数据类型的包装类

int——Integer   char——Character        其他均为首字母大写  Number 子类

除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了。

Integer,Byte,Float,Double,Short,Long都是Number类的子类。(Number类后面讲);

Character和Boolean都是Object直接子类;

8个类都是final修饰的(不可被继承)。



在Java中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换.

例1:

String str ="123";

try{

inta = Integer.parseInt(str);

}catch(NumberFormatException e) {

e.printStackTrace();

}

例2:

String str ="123";

try{

intb = Integer.valueOf(str).intValue()

}catch(NumberFormatException e) {

e.printStackTrace();

}

在转换过程中需要注意,因为字符串中可能会出现非数字的情况,所以在转换的时候需要捕捉处理异常



整型类的享元模式:

Integer a = 123; Integer b = 123; 相等吗?true

Integer a = 246; Integer b = 246; 相等吗?false

why????

public static Integer valueOf(int i) {

assert IntegerCache.high >= 127;

if (i >= IntegerCache.low && i <= IntegerCache.high)

return IntegerCache.cache[i + (-IntegerCache.low)];

return new Integer(i);

}

==比较的是地址值 Integer的数据直接赋值,如果在-128到127之间,会直接在缓冲池里获取数据。针对-128到127之间的数据,做了一个数据缓冲池,如果数据时该范围内的每次并不创建新的空间。因为创建了新空间地址值不同所以是false,用equals比较就是true。


你可能感兴趣的:(7.25号课程总结)