码迷,mamicode.com
首页 > 其他好文 > 详细

final finally finalize的区别

时间:2018-03-30 14:06:35      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:int   oid   dex   rgs   ble   stack   string   catch   ace   

1.final

final修饰符 所标记的成分具有终态的特征,表示最终的意思。

final修饰类,类不能被继承。该类将不具有子类。

final修饰方法,方法不能被重写,在某些特殊情况下jvm会将该类方法直接内联以便于减少函数调用开销。

final修饰变量,变量的引用指向不可更改。大约等同于变量不可被更改。(如果引用的是集合,只能保证集合引用指向不被更改、内容无法保证)

2. finally

finally 是指用于try{}中必须被执行的部分。

  1. 常规用法

    try{
      xxx
    }catch(Exception e){
      xxx
    }finally{
      xxx
    }
  2. finally和方法的return

如果return在try块中,无论何时都会执行finally中的代码。

如果return 在finally中则finally中的代码优先于try块中执行

finalize

finalize 是一个Object对象的方法,当一个对象被回收时会调用该方法。

常规用法

public class Test {
    @Override
    protected void finalize() throws Throwable {
        System.out.println("我被回收了");
        super.finalize();
    }
}

public class Demo {
    public static void main(String[] args) {
        Test test = new Test();
        test = null;
    //这里的gc调用不是每次都会成功。
        System.gc();
    //简易的增加一个延迟
    try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

结果

我被回收了

final finally finalize的区别

标签:int   oid   dex   rgs   ble   stack   string   catch   ace   

原文地址:https://www.cnblogs.com/yanlong300/p/8675664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!