final、finally、finalize到底有什么区别呢

在学习java的过程中,我们总会遇到final、finally、fanalize这三个词,那这三个词到底是什么意思呢?或者说有什么用呢?我再这里总结一下,提供以后使用。

Final是java里面的一个修饰词,他可以修饰类、方法、变量。

  1. final修饰一个类。表明该类不能被其他类继承,是一个最终类,并且在类里面所定义的成员方法也是隐含修饰为final。
  2. final修饰一个方法。表明该方法是最终方法,是不能通过继承该类来实现这个方法的,也不能够通过重写来改变方法。若父类中final方法的访问权限为private,将导致子类中不能直接继承该方法,因此,此时可以在子类中定义相同方法名的函数,此时不会与重写final的矛盾,而是在子类中重新地定义了新方法。
  3. final修饰一个变量。修饰后只能复制一次,并且这个值不能够被改变。final修饰一个引用类型的时候,该引用类型不能再次指向其他对象。比如说String类就是一个final类。每次在+操作之后都会创建新的对象。

finally是在java异常机制出现的一个关键字,是和try、catch块搭配使用的。

finally的使用注意事项:
只有与finally对应的try语句块得到执行的情况下,finally语句块才会执行。以上两种情况在执行try语句块之前已经返回或抛出异常,所以try对应的finally语句并没有执行。当一个线程在执行try块或者catch块被大端或者终止的时候,finally就可能不会被执行。

finalize()是java.lang.object类里面的一个方法。也就是说每个对象都有折磨一个方法

因为所有new出来的对象,gc都可以回收,所以一般是不需要去手动实现finalize()方法的。虚拟机在执行finalize()方法的时候都会执行该对象的finalize()方法。一个对象的finalize()方法只能被调用一次,但是调用finalize()方法的话gc不会马上回收该对象,所以就会出现,如果前面调用了finalize方法,但是后面有需要用到该对象,到真正该回收的时候因为前面调用了一次该方法,这个时候就会出现问题。
所以不建议手动使用finalize()。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值