4.2 使用现有类
1. 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。 new操作符的返回值也是一个引用。 (P93)
2.所有Java对象都存储在堆中. (P94)
4.4 静态域和静态方法
1.static:属于类且不属于类对象的变量和方法。 (P112)
4.5 方法参数
1. Java采用的是值调用,即方法得到的是所有参数值的一个拷贝。 参数有两种:基本数据类型和对象引用。
(1). 一个方法不能修改一个基本参数类型的参数(即数据值和布尔型);
(2). 一个方法可以改变一个对象参数的状态;
(3).一个方法不能实现让对象参数引用一个新的对象。(P118)
4.6 对象构造
1.方法签名:方法名及参数类型。 如indexOf(int) 。注意,返回类型不是方法签名的一部分。 (P121)
2. 在执行构造器之前,先执行实例域的赋值操作。而实例域的初始值并不一定是常量。(P122)
3.数据域的有三种初始化方法:在构造器中设置值、在声明中赋值;以及实始化块(不一定是静态块) (P124)
下面这段代码,就是先运行初始化块,然后才运行构造器的主体部分。
class Employee { public Employee(String n, double s){ name = n; salary = s ; } public Employee( ){ name = ""; salary = 0 ; } ... private static int nextId; private int id; private String name; private double salary; ... ... //Object initialization block { id = nextId; nextId++; }
4.调用构造器的具体处理步骤:(P125)
(1). 所有数据域被初始化为默认值(0、false或null);
(2). 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块;
(3). 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体;
(4). 执行这个构造器的主体。
5.所有的静态初始化语句以及静态初始化块都将依照类定义的顺序执行。 (P125)
6. 可以应用一个类似dispose或close的方法完成相应的清理操作。但需要说明,如果一个类使用了这样的方法,当对象不再使用时一定要调用它。(P128)
4.7 包
1.在包中定位类是编译器的工作。类文件中的字节码肯定使用完整的包名来引用其他类。 (P129)
2.如果将一个包密封(package sealing)起来,就不能再向这个包添加新类了。 (P134)
4.10 在的设计技巧。
1、一定要对数据初始化。
java不会对局部变量进行初始化,但是会对对象的实例域进行初始化,方式是可以提供默认值(最好不要依赖系统的默认值,而应该显式地设置),也可以在构造器设置值。 (P141)