final、finally和finalize的区别

本文详细介绍了Java中final关键字的使用方法,包括修饰数据成员、方法和类的作用;解释了finally作为异常处理的一部分如何确保代码执行;并探讨了Object类中的finalize方法及其在垃圾回收中的角色。

一、final------是关键字

1、修饰数据成员

(1)基本类型:值不变

(2)对象类型:引用不变,一旦指定一个对象后,不能再改为指向另一个对象

2、修饰方法:该方法不能被重写

3、修饰类:该类不能被继承


二、finally------是区域块,与try...catch...finally连用

在try...catch...finally模型中,无论怎么样,finally块中都会被执行


三、finalize------是Object的一个方法

1、作用:

GC只知道回收那些由new分配的内存,若你的对象不是通过new方式获得了一块“特殊”的内存(比如:native 方法中调用C的malloc分配内存,除非你调用了free,否则这块内存得不到释放,从而造成了内存泄露),那么GC就无能为力了。这时候,可以在finalize中调用free。

2、原理

一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。

3、注意

无论是gc还是finalize,都不能保证一定会发生。若jvm并未面临内存耗尽的情形,它是不会浪费时间去执行gc的。通常,不能指望finalize,必须创建其他的清理方法,并且明确地调用它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值