final finally finalize区别?

final修饰一个类 ,这个类不可以被继承,修饰方法这个方法不可以被重写,修饰基本数据类型(比如int)值不能发生变更,修饰对象,对象的引用不可以发生变更。

我理解的类设置成final,要么这个类是系统运行过程中一个非常重要的类,不希望别人继承。或者这个类的代码已经没有需要改的点了,代码性能足够好代码逻辑足够完整,这个类不需要优化。我也只见过一些JDK或者中间件代码将类设置成final,比如String,我理解String是整个Java运行过程最基础的一个类,如果我可以继承String,那理论上,底层JDK,类方法入参是String的,我继承实现的类也可以传进去然后运行,如果你继承String写的方法没什么问题还好,有问题整个代码运行环境就没有了,JDK运行都出错了,那怎么保证用户代码逻辑不出问题,还有就是String真的有你需要改的方法吗?

finally一般是为了释放资源,比如加锁释放锁逻辑,开始的时候加锁,方法逻辑完成后释放锁。业务代码出现了异常也需要释放锁,就可以把释放锁的逻辑放到finally中,这样程序正常运行或者异常都会释放锁。

finalize是Object(Object里面有哪些方法有的面试官也会问)的一个方法,调用这个方法是为了释放内存,让垃圾收集器回收这部分内存。但是是异步,不能保证这个对象会被回收。比如服务关闭的时候,调用这个方法,开个线程异步去回收对象,服务都关闭了,线程怎么可能还会运行。

#大厂##面试题目#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务