final和finally的区别
二者在本质上就有一定的区别,final用于修饰类、方法和变量—–>有不可变的特性;
而finally则是用于异常处理机制,可以说除了看起来像,其余的根本不一样。
1.final关键字
- 修饰类:不能被继承;
- 修饰方法:不能被重写;
- 修饰变量:只能被赋值一次,不能被重新赋值,其实就是个常量;
- 修饰引用类型,地址值不能变,引用可变;
- 修饰成员变量:要在构造方法完成前,进行初始化;
2.finally
finally是try语句中的语句体,不能单独使用,用来释放资源,可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作。
//下面的代码会被执行吗?
try {
// do something
System.exit(1);
} finally{
System.out.println("Hello,I am finally。");
}
上面 finally 里面的代码是不会被执行的,因为 try-catch 异常退出了。
下面还有一些情况不会被执行:
// 死循环
try{
while(ture){
System.out.println("always run");
}
}finally{
System.out.println("ummm");
}
// 线程被杀死
当执行 try-finally 的线程被杀死时,finally 中的代码也无法执行。