1 Guaranteed initialization with the constructor
自动调用构造函数,给类中属性自动赋值。
2 方法重载 Method overloading
方法重载主要是根据方法中参数的不同或者返回值的不同的几个同名方法。
2.1 Distinguishing overloaded methods
2.2 Overloading with primitives
匹配采用自动匹配的方式,就近原则。char有点不同,如果找不到匹配的,就采用int,如果没有就找long、float、double。
2.3 Overloading on return values
3 Default constructors
当定义了构造函数,默认的构造函数将消失。
4 The this keyword
Banana a = new Banana(),
b = new Banana();
a.peel(1);
b.peel(2);
// 会自动解释为:
Banana.peel(a, 1);
Banana.peel(b, 2);
this关键字用在非static方法的内部,代表对象的引用。必须注意不要滥用。
this关键字一般用于返回自身和将自身传递给外部方法。
4.1 Calling constructors from constructors
Flower(String s, int petals) 我们可以采用this关键字调用构造函数this(petals),但不可以再写this(s),只能写this.s = s;
4.2 The meaning of static
静态方法就想全局方法,不面向对象。对于静态方法我们无需传递消息给对象,所以也就没有this的使用了。
5 Cleanup: finalization and garbage collection
垃圾回收器只负责回收使用new关键字创建的对象,对于不使用new关键字创建的对象,Java提供了finalize方法。
5.1 What is finalize() for?
一般情况下,不需要使用。
5.2 You must perform cleanup
在C++中,必须执行销毁,但在java中,即使使用了垃圾回收器或finalize也不能保证内存已经回收。
5.3 The termination condition
super.finalize(); // Call the base-class version
System.gc();
5.4 How a garbage collector works
了解了一些垃圾回收的方式,优点地方没有完全看明白。
6 Member initialization
类中的成员会自动初始化,但在过程中定义的变量,必须显示初始化。
6.1 Specifying initialization
7 Constructor initialization
7.1 Order of initialization
首先初始化类中的成员,然后再初始化类中的构造函数。
7.2 static data initialization
静态成员的初始化只有在第一次创建对象的时候才执行,以后将不再被重新初始化。
首先是初始化静态成员,然后是非静态成员,最后是构造函数。
7.3 Explicit static initialization
static Cup cup1;
static Cup cup2;
static {
cup1 = new Cup(1);
cup2 = new Cup(2);
}
7.4 Non-static instance initialization
Mug mug1;
Mug mug2;
{
mug1 = new Mug(1);
mug2 = new Mug(2);
print("mug1 & mug2 initialized");
}
8 Array initialization
8.1 Variable argument lists
9 Enumerated types
for(Spiciness s : Spiciness.values())
System.out.println(s + ", ordinal " + s.ordinal());
10 Summary
主要介绍初始化方面的信息。另外介绍了垃圾回收器。