1. 下面的代码 finally 会不会执行,如果会是在 return 之前还是之后?
public void Test(){ int a = hello(); System.out.println("a = " + a);}public int hello(){ int a = 10; try{ System.out.println("a = "+ a); return a++; } catch(Exception e){ e.printStackTrace(); } finally{ System.out.println("a = " + a); a++; System.out.println("a = " + a); } return 5;}
【答】:finally 语句块无论何时都会执行并且是在 return 之前执行。
2. java 中的 final、finally 与 finalize()的区别
- final 修饰的类不可继承,final 修饰的方法不能重写,final 修饰的变量是常量。
- finally 是在处理异常时的一个关键字,一般 try 语句可以与 catch 连用,也可以与 finally连用,也可以三个一起连用。finally 代表无论何时(是否出现异常)其中的代码都会被执行到,一般用于关闭一些耗性能的资源,如数据库的连接。
- finalize()是Object类的一个方法,是由protected修饰的,所以我们的子类可以重写finalize()方法。它的作用就是 java 在执行垃圾回收时对要回收的对象之前会主动调用此方法,所以,可以在此方法中定义一些回收或清理内存、资源的操作。