首页 > 代码库 > 读TIJ -4 初始化和清除

读TIJ -4 初始化和清除

《Think in java·第 4 章初始化和清除》

本章介绍对象的创建和消除。

4.1 用构建器自动初始化 

【You can imagine creating a method called initialize( ) for every class you write.】一句话的正确解读是,你(男生)将自己想象成为女生。所以,我专门用一节 《 编程导论(Java)·2.3.6 构造器不是方法》强调这一点。

4.2 方法过载

这一段解释非常经典,按照人们的日常生活介绍重载。同时,翻译非常xx。【但若强制象下面这样说,就显得很愚蠢:“衬衫洗 衬衫”、“车洗 车”以及“狗洗 狗”。】吼吼n
4.2.1 区分过载方法  
4.2.2 主类型的过载(涉及基本类型的过载) 自动类型转变与重载。事实上,引用类型也一样。
4.2.3 返回值过载  
4.2.4 默认构建器 
4.2.5 this 关键字 这一段绕口。 this.
1. 在构建器里调用构建器  this()
2. static 的含义 【有些人抱怨static 方法并不是“面向对象”的,因为它们具有全局函数的某些特点;利用static 方法,我们不必向对象发送一条消息,因为不存在this。这可能是一个清楚的自变量,若您发现自己使用了大量静态方法,就应重新思考自己的策略。然而,static 的概念是非常实用的,许多时候都需要用到它。所以至于它们是否真的“面向对象”,应该留给理论家去讨论。事实上,即使Smalltalk 在自己的“类方法”里也有类似于static 的东西。】概念是第一性的。

4.3 清除:收尾和垃圾收集

写得不顺畅,跳过去。

4.4 成员初始化

局部变量必须显式初始化。在《 编程导论(Java)·2.2.3 变量的声明模型》中一笔带过,是不是太忽略了?【Java 尽自己的全力保证所有变量都能在使用前得到正确的初始化。若被定义成相对于一个方法的“局部”变量,这一保证就通过编译期的出错提示表现出来。……】值得借鉴。
4.4.1 规定初始化  即我所使用的“赋值初始化”阶段
4.4.2 构建器初始化   讲解的顺序不好。初始化块与构造器一起讲;对象的初始化三步曲,由默认初始化、赋值初始化和执行构造器(含初始化块)代码构成。静态变量(non-final static variable)的初始化是假三步曲。三部曲 Vs. 三步曲 (1.3.2中改为三部曲,2.3.4中三步曲没有改。长知识了吐舌头

4.5 数组初始化

这里讲数组的定义、声明、初始化等。很不喜欢Think in java时时刻刻拿C、C++说事,这一节开始就开始叨叨絮絮C、C++。
What if you don’t know how many elements you’re going to need in your array while you’re writing the program?这个问题如同问“如果你想吃又没有大饼怎么办”一样,太诱惑人了。
4.5.1 多维数组 即数组的数组