Thinking in Java 读书笔记-初始化与清理
2013-11-22 13:05
375 查看
构造器
在java中,类的设计者通过提供构造器确保每个对象得到初始化(特殊情况除外,可以将构造器写成private,这种情况一般出现在设计者不让开发者随意创建该类对象,如单例模式)。构造器采用与类相同的名称,以防止(1)与类的成员名称重名;(2)让编译器知道调用该方法。
构造器是一种特殊类型的方法:无返回值(不同于void)。
不接受任何参数的构造器叫做默认构造器或者无参构造器,其作用是创建一个默认对象。如果类中没有构造器,编译器则会自动创建一个默认构造器。
清理:终结处理和垃圾回收
finalize()方法:在垃圾回收时刻进行的操作。我们只能保证在垃圾回收时刻会调用finalize()方法,但是不能控制什么时候进行垃圾回收。决定什么时候进行垃圾回收的是JVM,因为垃圾回收本身也有开销,所以可能只要程序没有濒临存储空间用完的那一刻,对象的占用空间就总得不到释放。finalize()不能直接调用。finalize()无法预料,常常是危险的,多余的。(Effective Java)垃圾回收器工作原理看到的一篇比较好的文章:Java的内存回收机制
引用计数技术:每个对象含有一个引用计数器,当有用用连接至对象时,引用计数加1。当引用日开始作用域或者被置null时,引用计数器减1。当发现某个对象的引用计数为0时,就释放其占用的空间。缺点:无法解决循环应用问题。
其他见超链接。
成员初始化
方法的局部变量必须初始化,否则编译器会报错;类成员变量会自动完成默认初始化(置二进制0)。如果一个对象没有进行初始化操作就使用则会出现运行时错误。
对象创建过程,以Dog类为例:
Dog类的静态方法/静态域首次被访问时(包括首次创建Dog对象,因为构造器可以看成静态方法),java解释器查找类路径,以定位Dog.class文件。
载入Dog.class,执行静态初始化的所有动作。静态初始化只加载一次。
当用new Dog()创建对象时,首先将在堆上为Dog对象分配足够的存储空间。
这块空间会被清零,这就自动的将Dog对象中的所有基本类型数据都设置为默认值,而引用则被设置成null。
执行所有出现于字段定义处的初始化操作。包括自动初始化和实例初始化。
执行构造器。
tips:
方法重载区分方法:参数类型列表。不能根据返回值区分重载方法。
this关键字返回当前对象的引用。构造器可以通过this关键字调用其他构造器。
相关文章推荐
- Thinking in Java第三版读书笔记-第四章:初始化与清理
- Thinking in Java 读书笔记 第五章 初始化与清理
- thinking in java 笔记 思维导图 第五章初始化与清理
- Thinking in java 读书笔记(四、toString,class的初始化顺序)
- Thinking in Java 第5章 初始化与清理 【可变参数列表】
- Thinking-in-Java-读书笔记-5-初始化与清理
- 【Thinking in Java, 4e】初始化与清理
- Thinking In Java 学习笔记 - 初始化与清理
- 清理与垃圾回收_Thinking in Java(4)_读书笔记(2)
- thinking in Java:5.1初始化与清理
- Java编程思想,读书笔记三(第5章 初始化与清理)
- thinking in java:5. 初始化与清理
- Thinking in Java:第五章-初始化与清理
- Thinking in Java--第五章-初始化与清理
- thinking in Java ---03-06操作符&流程&初始化清理&权限访问
- Thinking In Java笔记(第五章 初始化与清理(二))
- thinking in java——初始化与清理
- Thinking In Java中初始化和清理中的一段代码
- Thinking In Java笔记(第五章 初始化与清理(三))
- 【Thinking in Java】初始化与清理(一)