第三章. 控制程序流程
double,float这类浮点数注定不能精确的比较,但是BigDecimal可以提供unscaledValue*10 –scale这样一种形式的浮点数。
位移运算符中增加了无符号的右移运算符>>>。位移运算符如果操作的对象是char,byte,short,那么它们在被位移操作的时候,先被转化为int,运算结果为int类型。
Java中不允许程序员重载运算符,但它默认实现了string的+操作。
Java的浮点数在强制转化成整数的时候,总是舍去小数部分。
Math.random()方法生成0到1间的浮点数,包括0但不包括1。
一些问题
1. Java中如何判断对象是否相等?如何判断对象的值是否相等?equals()和==有什么区别?
equals()方法是由Object类中定义,目的是为了比较两个对象是否相等,如果需要比较两个对象的值是否相等,需要重写equals()方法,因为Object中默认的实现是比较两个对象的引用(或叫标识)是否指向同一个对象。而这一实现的代码即为:
public boolean equals(Object obj) {
return (this == obj);
}
所以说,对象标识之间的==比较的是两个标识是否指向同一个对象。
2. 介绍一下Java中经常使用的literals(字面常量)?
0x:十六进制
0:八进制
L:long
F:float
E:10的某此方,12e1即为12乘以10的1次方
3. Java中随机数的生成策略是怎样的?
第四章. 初始化和清理
一些问题
1. Java的垃圾回收机制的运行方式?
参考《Inside Java Virtual Machine》第九章和《Thinking in Java》第四章
第五章. 隐藏实现细节
可以使用Java的package机制自定义自己的程序库,该程序库可以包含一些常用的算法,和一些常用方法的简化形式,提高编程效率。
一些问题:
1. 为什么要设置访问权限
之所以要设置访问权限,基于两个理由。首先设置访问权限可以禁止使用者触碰到他们本不该看到的内容;其次让程序的设计者可以更改类内部的信息而无需让客户端程序员知晓。
第六章. 重复运用Classes
人们无法预测Java中的垃圾回收器何时运行,所以不要把必要的清除工作交给垃圾回收器,程序员需要自己编写清除函数来完成这一功能。在finally块中显示写出以期其必须执行。
Java标准程序库中的Vector和Hashtable是公认的设计不合理的类。Why?
一些问题:
1. Java中可以使用final关键字的地方?介绍?
在Java中有三处可以使用final关键字,分别是data、method和class
Final修饰data,分两类:修饰基本类型,修饰对象引用。当修饰基本类型的时候,会给数据预先分配一块无法改变的内存区域。当修饰对象引用的时候,对象的引用无法改变,而对象里具体的内容是可以修改的。
Final修饰method,保证类在继承的时候无法复写final方法;另外final修饰method还会有效率上的考虑,虚拟机会考虑将final方法设成内联的形式:插入某段程序代码以执行调用机制---将参数送入stack、跳至函数代码所在位置并执行、调回并清除stack。
Final修饰class,即保证类不能被继承。