Java中final 、finally、 finalize三者区别及使用

一、final关键字

  1. 使用final修饰类、方法、属性
  2. final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误
  3. 使用final定义的类不能有子类(String类便是使用final定义)
  4. final一旦修饰一个类之后,该类的所有方法默认都会加上final修饰。(不包含成员变量),被final修饰的类不能被继承
  5. final不能修饰抽象类和接口,因为抽象类中会有需要子类实现的抽象方法,同样接口中也会有需要实现类来实现的方法
  6. 使用final定义的方法不能被子类所覆写、继承
  7. 使用final修饰的变量就会变成常量public final int a=100;不能再次赋值,使用过的final不能再次修改
  8. 对常量进行赋值public static final int a=100;
  9. 使用final的好处就是防止代码功能被重写,不对其修饰的类或者方法进行扩展,增强数据的安全性

二、 异常finally

  1. 只能与try/catch语句结合使用,finally语句块中的语句一定会执行。
  2. 使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。
  3. 异常体系中,若finally代码块中存在return语句,则try、catch语句失效。
   try {
            exceptionTest.age = 1;
            return exceptionTest;
        }catch (Exception e) {
            exceptionTest.age = 2;
            return exceptionTest;
        }finally {
        //第一种
            exceptionTest = new ExceptionTest();
            int age = 3;//0
            return exceptionTest;
        //第二种
           exceptionTest = new ExceptionTest();//0
            return exceptionTest;
       //第三种
        exceptionTest = new ExceptionTest();
        exceptionTest.age = 3;//3
           return exceptionTest;
       //第四种:只有return语句看try
        }
  1. 若finally无return,try、catch有return语句,则try、catch代码块先暂存代码块中的值,然后执行finally代码块,最后返回暂存值,也就是try中的值
返回0
ExceptionTest exceptionTest = new ExceptionTest();
  try {
            return exceptionTest;
        }catch (Exception e) {
            exceptionTest.age = 2;
            return exceptionTest;
        }finally {
          exceptionTest = new ExceptionTest();
          exceptionTest.age = 3;

        }

finally有return主要看finally,这个时候还要看finally中的语句;finally没有return以try为主,

三、finalize

是一个方法,属于java.lang.Object类,finalize()方法是GC (garbage collector垃圾回收)运行机制的一部分,在垃圾收集器执行删除对象的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
这篇博客上面讲得非常的详细,大家可以看一下(转载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值