finally,它只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。
即使在try语句中有return等结束方法或循环的代码被执行后,finally中的内容仍然会被执行
public class Test2{
public static void main(String[] args){
try{
System.out.println("return之前!");
return;
System.out.println("return之后!");
}catch(Exception e){
System.out.println("程序抛出了异常");
}finally{
System.out.println("finally被执行了!");
}
}
}
运行结果:
return之前!
finally被执行了!
从结果上我们看到finally中的代码被执行,即使程序被return中断,这是因为return的返回并没有彻底返回,而是在finally中的语句执行完后,彻底返回,结束
final:是修饰符(关键字)有三种用法:
第一种:类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词;
第二种:将变量声明为final,可以保证它们在使用中不被改变;被声明为final的变量必须在声明是给定初始值,而在以后的引用中只能读取不能修改。
第三种:被声明为final的方法不能在子类中被重写。
finally:通常放在try…catch…的后面,finally块中的代码一定能执行,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中
添加:
finalize:Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。