学习笔记(9):Java面试Offer直通车-final finally和finalize,面试中别搞混

立即学习:https://edu.csdn.net/course/play/27126/355509?utm_source=blogtoedu

finally 从句说辞

  1. 不管是否发生异常,不管发生何种异常,finally从句代码会被执行
  2. 哪怕try和catch里有return,finally从句也会被执行
  3. 除非有system.exit(0)语句,finally从句菜不回被执行
  4. 画龙点睛:finally从句里,可以存放发回收资源得代码,比如释放数据库连接,释放IO对象,清空(clear)集合,设置大对象为null,以减少大对象的强引用,从而提升大对象的回收时间。

finalize方法的用途

  1. 相当于C++里的析构函数,对象被回收前,会调用该方法

  2. 建议不重写,采用Object类里默认的,即不做任何动作。

  3. 如果要重写,千万慎重,因为一旦没写号,会导致对象无法被回收,从而导致内存泄露

  4. 建议说辞:我知道finalize的作用,为了避免因错写而导致的对象无法回收,所以在项目里不重写。

final 作用在类上

  1. 可以作用在类上,表示这个类不能被继承
  2. final类的方法,会隐式地设置为final,即不可被覆盖
  3. 在详细设计阶段,如果有不想被继承的类,比如业务订单类,那么需要在类上加上final修饰

final作用在方法上

  1.  可以作用在方法上,表示该方法不能被覆盖
  2. 定义final方法的动机时,防止子类方法通过覆盖修改其中逻辑,
  3. 在详细设计阶段,如果在父类里定义的方法已经定型,而如果在子类里修改它会有逻辑错,那么可以加上final下修饰。

 

final作用在变量上

  1. 如果作用在基本数据类型上,该变量不能被修改,即为常量
  2. 如果作用在引用上,该引用不能再指向其他内存空间,但该引用指向的当前值,是可以改变的。
  3. 在实际项目里,一般是用final来定义常量

在面试中引出相关话题的技巧

在详细设计和代码review的过程,

  1. 哦们会根据业务需求,在相关类和方法前加final
  2. 我们的项目非常注意异常的处理 ,比如在finally从句里加入资源回收类代码。
  3. 在我们项目里,因为无须在对象回收前定义相关资源释放的动作,所以无需重写finalize方法,并且要确保所有类的该方法都不重写。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值