Java中final、finalize()、finally三者的区别

    Java中final为修饰词,用于修饰类、变量和方法。被final修饰的类不能再有派生类。被final修饰的变量是不可变的。被final修饰的方法不能重写。

    Java中的finalize()是java垃圾回收机制回收对象前调用的最后一个函数。可以重写finalize()方法从而实现对资源的回收。通常是在这个方法中需要释放这个对象所申请的其他系统资源。finalize()类似于c++中的析构函数。C++中,在构造函数中我们获取资源,在析构函数中释放资源,释放了的资源被回收可以重新利用。比如在构造函数中打开文件,在析构函数中关闭。构造函数和析构函数操作相对应。

    Java中的finally{}通常是和try{} catch{} 一起使用,其目的是不管有没有发生异常都进行finally{}中的操作。

Java中try、catch、finally执行顺序小结:

  • finally代码块比return先执行 (finally是在return后面的表达式运算后执行的,这时候没有返回运算的值而是先把要返回的值保存起来,无论finlly中的代码怎么样,返回的值不会改变,故函数返回值是在finally执行前确定的)。
package com.gary.testfinally;

public class TestForFinally {
    public int add(int a, int b) {
        try {
            return a + b;
        } catch (Exception e) {
            System.out.println("catch语句块");
        } finally {
            a++;
            System.out.println("finally语句块");
        }
        return 0;
    }

    public static void main(String[] args) {
        TestForFinally test = new TestForFinally();
        System.out.println("和是:" + test.add(9, 34));
    }
}


finally语句块
和是:43
  •  多个return是按顺序执行的,多个return执行了一个后,后面的return就不会执行了。
package com.gary.testfinally;

public class TestForFinally2 {
    public int add(int a, int b) {
        try {
            return a + b;
        } catch (Exception e) {
            return b;
        } finally {
            return a;
        }
    }

    public static void main(String[] args) {
        TestForFinally2 test = new TestForFinally2();
        System.out.println("和是:" + test.add(9, 34));
    }
}

和是:9
  •  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值