跟公司产品做网站,网站美工培训机构,企业每月报账在哪个网站做,公司简历模板电子版参考
三者区别
final
final 是 java 关键字可修饰变量#xff08;类成员变量、类静态变量、局部变量和形参#xff09;#xff1a;表示不可修改当前变量的值#xff08;这里的值可以是地址#xff0c;也可以是基本类型的值#xff09;##xff08;注意#xff1a;fi…参考
三者区别
final
final 是 java 关键字可修饰变量类成员变量、类静态变量、局部变量和形参表示不可修改当前变量的值这里的值可以是地址也可以是基本类型的值#注意final只是限定当前变量的值并不会限制引用对象的增删改查#可修饰方法表示方法不可以被重写Override可以修饰private、static修饰的方法可修饰类表示当前类不可以被继承较多的基本类型的引用类型都是final修饰的final 还可以提升性能从并发角度分析#后续分析#
finally
java 关键字是一种能够保证代码一定被执行的机制当然也有两种情况不会执行 try 未被执行在finally之前执行了 System.exit(0) 语句强制退出
finalize
java 关键字是Object类中定义的方法主要用于垃圾回收
为啥 finalize不推荐使用 垃圾回收主要根据可达性分析判断一个对象是否可以被回收当一个对象被判定为从GC ROOT不可达也并非一定被回收。因此对象被回收需要经历两次标记过程才会判断一个对象是否需要真正被回收。 总结如果对象未实现 finalize 方法在经历第二次标记后会被判定为直接回收另外finalize方法并不保证一个对象一定被回收
两次标记 第一次标记该对象从GC ROOT不可达或者说不存在GC ROOT引用链 第二次标记就会判断该对象是否实现或者被调用 finalize 方法 如果确定该队形一定要执行 finalize 方法首先将该对象添加进F-队列中然后收集器会对F-队列中的对象再次进行标记如果该对象在执行finalize方法的时候被其他GCRoot可达的对象引用该对象就不会被回收
调用finalize方法对象一定被回收吗
被添加到F队列的对象稍后虚拟机自动建立低优先级的回收线程执行finalize方法这里的执行只是表示开始执行**#finalize#**由于极端对象由于死循环、执行慢的情况会导致队列中的其他对象一直处于等待场景因此并不保证 finalize 执行完成如果对象在 finalize 方法中被其他GCRoot可达的对象引用该对象就不会被回收
了解Cleaner机制后续补充
finally 和 Return 的执行顺序