final和finally的区别

mac2026-10-02  3

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()方法可以整理系统资源或者执行其他清理工作。

最新回复(0)