* 代码中圆括号(改变运算优先级)(不管是不是多余的)不会降低你程序的运行速度。
* byte b = 50;
b = b * 2;
当表达式求值的时候,操作数被自动地提升为int型,计算结果也被提升为int型。
* while循环(或Java的其他任何循环)的循环体可以为空。这是因为一个空语句(null statement)(仅由一个分号 组成的语句)在Java的语法上是合法的。
在专业化的Java代码中,一些可以由控制表达式本身处理的短循环通常都没有循环体。
* Switch(expression)中表达式必须为byte,short,int或char类型。每个case语句后的值value必须是与表达式类 型兼容的特定的一个常量。Case的值是不允许出现 重复。
当编译一个switch语句时,Java编译器将检查每个case常量并且创造一个“跳转表”,这个表将用来在表达式值的 基础上选择执行路径。
* 在Java中,break语句有3种作用。第一,在switch语句中,被用来终止一个语句序列。第二,退出当前循环。第 三,通过设置标签(Lab退出深层嵌套循环。
label1 : for(;;){
label2 : for(;;){
label3 : for(;;){
System.out.println(“直接退出这个三重循环”);
Breaklabel1;
}
}
}
* continue语句强迫一个循环提早反复,即忽略执行continue语句后剩余的循环体的语句,继续运行循环。
* 程序参数传递的方法有两种。第一种是按值传递(call-by-value),方法调用结束后,原参数值不变。第二种是引 用调用(call-by-reference),在这种方法中,参数 (如一个对象)的引用被传递给要调用的函数,其结果会改变 参数信息。
* 一个内部类可以直接访问包围它的外部类的成员,但是反过来就不成立了,即外部类不能直接访问内部类的成员。 内部类的成员只有在内部类的范围之内是可知的,而 且不能被外部类使用,只能调用。
* String类型的对象是不可改变的,如果你需要改变一个字符串,你可以创建一个新的字符串,其中包含修改后的字 符串即可。而StringBuffer类,允许字符串改变。
* 一个被定义成private的类成员为此类私有,它只能被它自己类中的其他成员访问,不能被该类外的所有代码问,包 括子类。
* 在类层次结构中,构造函数以派生的次序调用,从超类到子类。
* new运算符动态地为一个对象分配地址。
* 垃圾回收( garbage collection)技术:当一个对象的引用不存在时,则该对象被认为是不再需要的,它所占用的内 存就被释放掉。Java在不同的运行时刻会产生各种不 同的垃圾回收办法,但是对你编写的大多数程序,你不必须 考虑垃圾回收问题。
* finalize( )方法
有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java资源,如文件句柄或window 字符字体,这时你要确认在一个对象被撤消以前要保 证这些资源被释放。为处理这样的状况,Java提供了被称为析 构(finalization)机制。使用该机制
你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行。
要给一个类增加析构(finalizer),你只要在类中定义finalize ( )方法即可。Java回收该类的一个对象时,就会调用 这个方法。在finalize ( )方法中,你要指定在一个对 象被撤消前必须执行的操作。垃圾回收周期性地运行,检查对 象不再被运行状态引用或间接地通过其他对象引用。就在对象被释放之前,Java运行系统调用该对象的 finalize( ) 方法。
finalize()方法的通用格式如下:
protected voidfinalize( )
{
// finalizationcode here
}
其中,关键字protected是防止在该类之外定义的代码访问finalize()标识符。
* 封装(Encapsulation)将数据和处理数据的代码连接起来,通过封装你可以控制程序的哪一部分可以访问类的成 员,以阻止对象的滥用。
继承(Inheritance)是一个对象获得另一个对象的属性的过程。
多态性(Polymorphism,来自于希腊语,表示“多种形态”)是允许一个接口被多个同类动作使用的特性,具体 使用 哪个动作与应用场合有关,经常被说成是“一个 接口,多种方法”,降低了程序的复杂性。
* 精心设计的类层级结构是重用你花时间和努力改进并测试过的程序的基础,封装可以使你在不破坏依赖于类公共接 口的代码基础上对程序进行升级迁移,多态性则有助 于你编写清楚、易懂、易读、易修改的程序。