《Java编程思想》第2章——一切都是对象
- 在处理类型的层次结构时,经常想把一个对象不当作它所属的特定类型来对待,而是将其当作基类的对象来对待。这使得人们可以编写出不依赖于特定类型的代码。
- Java完全采用了动态内存分配方式。每当想要创建新对象时,就要使用new关键字来构建此对象的动态实例。
- Java提供了被称为“垃圾回收器”的机制,它可以自动发现对象何时不再被使用,并继而销毁它。
- 异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。
《Java编程思想》第2章——一切都是对象
- Java中的对象必须由用户自己创建。
- Java中的基本类型存储在堆栈中,对象存储在堆中,用堆进行存储分配和清理可能比堆栈进行存储分配需要更多时间,但是灵活性要更高。
- 基本类型具有的包装器类,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。
- 在Java中不需要销毁对象,该工作由Java的垃圾回收机制自动完成。
- 在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送信息给这些对象。
- 若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值(当基本类型变量作为类的成员使用时,Java才确保给定器默认值,但该方法并不适用于局部变量,即并非类的字段时)。
- Java中的方法只能作为类的一部分来创建,不能单独存在。同时,Java中的所有代码都必须写在类里。
- Java消除了所谓的“向前引用”问题。
- javadoc标签:诸如@author、@version、@param、@return、@throws、@Deprecated。
- Java代码采用“驼峰风格”:类名的首字母要大写,如果类名由多个单词构成,其中每个单词的首字母都采用大写形式,方法、字段(成员变量)以及对象引用名称等与类名的风格一样,只是第一个字母采用小写。
《Java编程思想》第3章——操作符
- Java的基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值时,是直接将一个地方的内容复制到了另一个地方;而对一个对象进行操作时,我们真正操作的是对象的引用。
- 整数除法会直接去掉结果的小数位,而不是四舍五入地结果。
- 对对象使用“==”和“!=”操作符时,比较的是对象的引用,而并非对象的实际值;如果想比较两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于基本类型,基本类型直接使用==和!=即可。但值得注意的是,equals()的默认行为是比较引用,所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。
- 与在C及C++中不同的是:不可以将一个非布尔值当作布尔值在逻辑表达式中使用。比如不允许我们将一个数字作为布尔值使用。
- 注意逻辑操作符的“短路”现象,如果所有逻辑表达式都有一部分不必计算,那将获得潜在的性能提升。
- 移位操作符只可用来处理整数类型。
- Java允许我们把任何基本类型数据转换成别的基本数据类型,但布尔型除外,后者根本不允许进行任何类型的转换处理。
- 通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。
- 当将一种类型转换成一种较小的类型时,必须留意“窄化转换”的结果,否则会在类型转换过程中不知不觉地丢失了信息。
《Java编程思想》第4章——控制执行流程
- 如果在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return。
- 一般的continue会退回最内层循环的开头,并继续执行。
- 带标签的continue会到达标签的位置,并重新进入那个标签后面紧接的循环(即标签所指的循环)。
- 一般的break会中断并跳出当前循环。
- 带标签的break会中断并跳出标签所指的循环。