-
final
- 修饰符,可用于修饰类,成员变量和成员方法,
- 被final修饰的类不能被继承,也当然所有方法都不能被重写
- 被final修饰方法,该方法不能被重写,同时不能被abstract修饰因为abstract(抽象的)表示需要子类重写该方法,两需求相勃
- 被final修饰变量,在初始化后不能改变值,如果是引用数据类型,将其指向的对象不能变,但是其对象内的值不能变(即指向的内存地址不能变化),如果是基本数据类型,可以看成常量,其值不能发生改变.
-
finally
- finally是在异常处理是提供finally块处理清除操作,无论是否发生异常抛出或捕获异常,try 块内的内容是否发生异常,最后都将跳转到finally块中.
- 执行流程
public void test01(){ try { System.out.println("try"); int i=1/0; } catch (Exception e) { System.out.println("catch"); return; } finally { System.out.println("finally"); } }
- 结果
try catch finally
- 在结果中可以看出是先执行try块,发生异常后跳转到catch块中,然后执行finally块
- 注意:
不管catch中是否存在return;都要执行finally块
- 那么在try中呢?
public void test01(){ try { System.out.println("try"); return; //int i=1/0; } catch (Exception e) { System.out.println("exception"); //return; } finally { System.out.println("finally"); } }
- 结果
try finally
- 结果一样所以无论是try块catch块,碰到return都会跳到finally执行再结束.可能有人问在return后怎么办?可是?return后不能编写代码吧.那可能是说在try/catch/finally后的,一但执行到return就表示方法结束了,后面的自然不再执行.
-
findlize
- findlize是方法名
- 在java中finelize()方法是在GC(垃圾收集器将对象从内存中清理出去之前要调用的必要的清理操作
- findlize()是在GC(垃圾收集器)在确定这个对象没有被引用时对这个对象调用的
- findlize()在object类中定义的,所以所有类都继承了该方法,子类可以根据其特点整理系统资源或执行其他清除操作.
- 注意:
finalize()方法是在GC(垃圾收集器删除对象之前对这个对象调用的.
final,finally,finalize的区别?
最新推荐文章于 2021-11-24 21:34:09 发布