final、finally、finalize

一、final是修饰符

修饰类的时候,类不可以被继承

修饰成员函数的时候,成员函数不可以被重写,多态机制被破坏。

修饰成员变量的时候,1:基本数据类型,代表不可更改。2:引用数据类型,引用不可更改,引用的对象是可以更改的

二、finally语句块

try--catch--finally

finally最终被执行的部分,一般用来进行资源关闭清理的操作,

public class FinalTest {
    public static int getInt(){
        int i=10;
        try{
            return ++i;
        }finally {
            System.out.println("will deal with i");
            i=100;
        }
    }
    public static void main(String args[]){
        System.out.println(getInt());
        try{
            return;
        }finally {
            System.out.println("wo le ge qu");
        }
    }
}
这段代码是一个面试题,在方法getInt,try块中执行return 语句,返回++i的值,这个时候的值是11,finally在return之前被调用了,执行了i=100的操作,开始会认为是100或者是101,事实证明是11,无论你返回的是interger引用类型还是int基本数据类型。记录的是返回时刻的引用,除非把i值封装在一个类的成员变量里面,理解引用。

三、finalize:

垃圾回收并不等于析构,因此垃圾回收并不保证一定会执行,执行的时候会调用finalize的方法,垃圾回收本身也有开销,策略就是,程序没有濒临用完的话,不会执行,程序执行结束,自然会退出,将资源交付。
那什么时候用?----本地方法中,调用c或c++的代码,malloc函数分配内存,必须手动调用free,否则会造成内存泄漏的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值