Java Core 读书笔记
1.
Jdk5.0 新增静态导入:import static java.lang.Math.*;
eg.
System.out.println(“The square root of
is ”+sqrt(PI));而不用Math.PI
2.
数据类型自动升级
byte àshortàintàlongàfloatàdouble
charà intàlongàfloatàdouble
3.
一个类中的方法如果是private,static,final的,则采用静态绑定。否则为动态绑定。
4.
一个对象与另一个对象equals相等,并不是表示hashcode相等。Hashcode如果相等,并不是equals就要相等。Hashcode的值跟对象的内存地址相关。
5.
让一个对象具有克隆功能,必须implements
Cloneable,如果一个类implements
Cloneable,那么不一定要覆写clone方法。
6.
内部类的三点好处:
6.1
可以访问该类定义所在的作用域中的数据,如私有数据。
6.2
内部类可以对同一个包的其他类隐藏起来。
6.3
当想要定义一个回调函数且不想编写大量代码,使用匿名内部类方便。
7.
接口如果要实现另外一个接口,那么要用extends关键字,不能用implements。
8.
进行数据运算的时候,只有除0的操作才会产生异常。书中说是对-1开平方会抛出异常这个在jdk6上面测试是不对的。结果应该是NaN。
9.
对于异常,早抛出,晚捕获是很好的选择。
10.
第一版的576页
11.
Interrupt(),interrupted,isInterrupted()的区别:
Void interrupt():发送一个中断请求给一个线程,让这个线程的中断状态将被设为true,如果你这个线程当前阻塞,那么throw interruptedException
Static Boolean interrupted():检查当前线程(即正在执行该指定的线程)是否已经被中断,它会将当前线程的中断状态设为false。
Boolean
isInterrupted():检查一个线程是否被终止,它不会改变线程状态。
第二版 13 页
12.
线程优先级:默认情况下,子线程继承父线程的优先级,同时线程优先级高度依赖于系统,因此即使有些线程的java优先级高,但是不一定先调用。
13.
守护线程:可以通过t.setDaemon(true)方法让一个线程变为守护线程。守护线程唯一的作用就是为其他的线程提供服务,当只剩下守护线程时,JVM会关闭掉这些线程。
14.
锁:在下面三个条件下,对域的访问是安全的。
14.1
域是volatile
14.2
域是final的,并且在构造器调用完成后被调用。
14.3
对域的访问有锁保护。
15.