1、==
long x = Long.MAX_VALUE;
double y = (double) Long.MAX_VALUE;
long z = Long.MAX_VALUE - 1;
System.out.println((x == y) + ""); // 不精确的! -1
System.out.println((y == z) + ""); // 不精确的! -1
System.out.println(x == z); // 精确的! -0
2、try-finally
//1
try {
System.out.println("Hello World!");
System.exit(0);
}finally {
System.out.println("Goodbye World!");
}
//2、不论 try 语句块的执行是正常地还是意外地结束,finally 语句块确实都会执行。然而在这个程序中,try 语句块根本就没有结束其执行过程。System.exit 方法将停止当前线程和所有其他当场死亡的线程。finally 子句的出现并不能给予线程,继续去执行的特殊权限。如果想要执行,需要使用 ShutdownHook。JAVA中的ShutdownHook遇到进程挂掉的情况,且一些状态没有正确的保存下来,ShutdownHook可以在JVM关掉的时候执行一些清理现场的代码。
System.out.println("Hello world");
Runtime.getRuntime().addShutdownHook(
new Thread() {
@Override
public void run() {
System.out.println("Goodbye world");
}
});
System.exit(0);