初始化与清除
1. 以构造器确保初始化:构造器的命名(类名),创建对象时,将会为对象分贝存储空间,并调用相应的构造器,确保了在操作对象之前,对象已经被初始化了。
2. 方法重载:(method overloading)构造器的重载;重载方法的区分,(参数的顺序不同---不建议,会使得代码难以维护)。
3. 基本类型的重载:传入的实际参数类型“小于”方法中声明的形式参数类型,实际参数的类型就会被“提升”。Char型略有不同,若无法接受char参数,就会把char直接提升至int型。
4. 以返回值区分重载方法:在java中,是行不通的。
5. 缺省构造器:类中没有构造器时,编译器会自动创建一个缺省构造器;若类中定义了一个构造器(无论是否有参数),编译器就不会帮你自动创建缺省构造器。
6. this关键字:this关键字只能在方法内部使用,表是“对调用方法的那个对象”的引用。
7. 在构造器中调用构造器:通过this来调用,但不能调用两个构造器。另外i,必须将构造器调用置于最起始处,否则编译器会报错。
8. static的含义:在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。
9. 清除(cleanup),终结(finalization)和垃圾回收(garbage collection):垃圾回收器只知道释放由new分配的内存,若对象获得了(并非使用new)一块“特殊”的内存区域,在类中定义一个名为finalize()的方法,来进行垃圾回收。
在java中,1)对象可能不被回收,2)垃圾回收并不等于“析构”。3)垃圾回收只与内存有关。
10. finalize()方法的使用:用来发现对象中存在没有被适当清除的部分。
11. 垃圾回收器如何工作:通过对对象重新排列,实现了一种高速的、有无限空间可供分配的堆模型。
12. 垃圾回收器的工作机制:1)引用计数技术,2)自适应的、分代的、停止——复制、标记——清扫3)即时(Just-In-Time,JIT)编译的技术,4)惰性编译(lazy evaluation)
13. 静态数据的初始化:初始化的顺序是先“静态”,后“非静态”的。静态初始化只进行一次。
14. 非静态实例初始化:比静态初始化子句少了static关键字,(放在类中的一个花括号中),支持“匿名内部类(anonymous inner class)的初始化是必须的。
15. 数组的初始化和多维数组的初始化。