首页 > 编程语言 > 详细

[java基础问题] final、finally、 finalize

时间:2019-05-29 16:36:03      阅读:151      评论:0      收藏:0      [点我收藏+]
  1. final、finally、 finalize
    1. final 用来修饰class,variable, function的关键字。修饰class时,代表类不可被继承;修饰variable时,代表标量不可修改(引用所指向的内存地址不可修改); 修饰function时,该方法不可重写(override);
    2. finally java中使用在try-finally 或者 try-catch-finally中,用来确保finally块内的代码一定会被执行,常用来关闭资源等;
    3. finalize 基础类 java.lang.Object 的一个方法,设计目的是保证对象在被垃圾收集前完成特定资源的回收。jdk9中被标记为deprecated(已过期)
  2. 知识扩展
    1. 使用final生命的变量只是当前引用地址不可变,如申明的是基本数据类型,则值不变。申明的是非基本数据类型时,对象的引用不可变,成员变量,等信息可以改变;
    2. finally确保总是执行,但是在异常退出时会不执行,例如:
    try {
        // do something
        System.exit(1);
    } finally {
        System.out.println("This is finally");
    }
    1. try-catch-finally中使用return的情况:
      1. 在执行第一个return之前没有抛出异常(包括在catch中存在return),则在执行return的前先执行finally后再执行return,此时在finally中无法改变return返回的值(引用的内存地址不可变);
      2. 如果在finally中使用return,会强制执行finally的return,在执行return之前catch的异常信息将会丢失,并且无法对异常进行处理try-catch中的return值会丢失;
    2. 建议使用try-with-resources机制来进行资源回收;
    3. finalize (已过期),原因是不发保证执行顺序与时间,并且实现了finallize的对象会被垃圾回收机制特殊处理,影响垃圾回收机制效率,甚至堆积一定程度后出现OOM;

[java基础问题] final、finally、 finalize

原文:https://www.cnblogs.com/xiong233/p/10944568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!