初始化与清理
用构造器确保初始化
- 创建对象时为对象分配存储空间,并调用相应构造器
- 不接受任何参数的构造器叫做默认构造器、无参构造器
- 构建器属于一种较特殊的方法类型,因为它没有返回值。这与 void 返回值存在着明显的区别。对于void 返 回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西。构建器则不同,它不仅什么也不会自动返回,而且根本不能有任何选择
方法重载
- 每个重载的方法都必须由一个独一无二的参数类型列表
- 甚至参数顺序的不同也足以区分两个方法
- 返回值不能区分方法
默认构造器
- 编译器会自动创建,如果你没有自己写
this关键字
- 只能在方法内部使用,表示对“调用方法的那个对象”的引用
- this调用只能调用一个构造器,而且必须位于最起始处
- static方法的内粗不能调用非静态方法
- 静态方法可以创建自身的对象
清理:终结处理和垃圾回收
- 垃圾回收期只是放那些经由new分配的内存
- finalize工作原理:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用 finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。
- java对象并非总是被垃圾回收
- 不该用finalize作为通用清理方法,他不是进行普通清理工作的合适场所
- finalize可用于终结条件的验证:只要对象中存在没有被适当清理的部分,程序就存在很隐晦的缺陷,finalize可以用来最终发现这种情况,尽管它不总是被调用,但如果某次动作使得缺陷的已发现,那么就可据此找出问题所在
- System.gc用于强制进行垃圾收集器
成员初始化
构造器初始化
- 在一个类里,初始化的顺序是由变量在类内的定义顺序决定的。即使变量定义大量遍布于方法定义的中间, 那些变量仍会在调用任何方法之前得到初始化——甚至在构建器调用之前
- 静态数据只占用一份存储区域
- 静态初始化只有在必要惊醒时刻才会进行
- 初始化的顺序:静态对象》非静态对象
- 构造器实际上也是静态方法
- 静态块仅执行一次:当首次生成这个类的一个对象时,或者首次访问属于哪个类的静态数据成员时
数据初始化
- 不允许指定数组大小
- 直接初始化数组等价于用new,由编译器负责分配空间
- 一个数组赋值给另一个数组只用复制了一个引用
- 所有数组都固有一个成员length
- 如果创建的是非基本类型的数组,那么就创建了引用数组
- 可变参数列表:method(object... args)
- getClass方法属于Object的一部分
枚举类型
- 用大写字母表示
- enum是个类,并且有自己的方法