有保障的无锡网站制作,国家反诈中心app下载安卓版,网站报价表对比表怎么做,网站设计 注意作者 | 磊哥来源 | Java面试真题解析#xff08;ID#xff1a;aimianshi666#xff09;转载请联系授权#xff08;微信ID#xff1a;GG_Stone#xff09;重要说明#xff1a;本篇为博主《面试题精选-基础篇》系列中的一篇#xff0c;查看系列面试文章请关注我。Gitee 开… 作者 | 磊哥来源 | Java面试真题解析IDaimianshi666转载请联系授权微信IDGG_Stone重要说明本篇为博主《面试题精选-基础篇》系列中的一篇查看系列面试文章请关注我。Gitee 开源地址https://gitee.com/mydb/interview本题目难度低常见程度高1.final 介绍final 是 Java 语言中的一个关键字使用 final 修饰的对象不允许修改或替换其原始值或定义。final 可以用来修饰类、方法、变量和参数其中可以用来修饰“参数”这一项容易被人遗忘这是 final 的 4 种用法。1.1 final 用法说明当 final 修饰类时此类不允许被继承表示此类设计的很完美不需要被修改和扩展。当 final 修饰方法时此方法不允许任何从此类继承的类来重写此方法表示此方法提供的功能已经满足当前要求不需要进行扩展。当 final 修饰变量时表示该变量一旦被初始化便不可以被修改。当 final 修饰参数时表示此参数在整个方法内不允许被修改。1.2 final 用法展示final 修饰类final class Animal {}final 修饰方法public class FinalExample {public final void sayHi() {System.out.println(Hi~);}
}final 修饰变量public class FinalExample {private static final String MSG hello;//......
}final 修饰参数public class FinalExample {public void sayHi(final String name) {System.out.println(Hi, name);}
}2.finally 介绍finally 则是 Java 中保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证释放锁等动作。2.1 finally 用法展示try {// do something
} finally {// 一定会执行的代码
}2.2 finally 扩展有时候面试也会问finally 是否一定会被执行这是一个有诱导嫌疑的问题正常情况下 finally 一定是会执行的但有一个特殊情况 finally 也是不会执行的特殊的实现代码和执行结果如下3.finalize 介绍finalize 是 Object 类中的一个基础方法它的设计目的是保证对象在被垃圾收集前完成特定资源的回收但在 JDK 9 中已经被标记为弃用的方法deprecated。在实际开发中不推荐使用 finalize 方法它虽然被创造出来但无法保证 finalize 方法一定会被执行所以不要依赖它释放任何资源因为它的执行极不“稳定”。在 JDK 9 中将它废弃也很好的证明了此观点。finalize 性能问题finalize 除了执行“不稳定”之外还有一定的性能问题。因为 finalize 的执行是和垃圾收集关联在一起的一旦实现了非空的 finalize 方法就会导致相应对象回收呈现数量级上的变慢有人专门做过 benchmark大概是 40~50 倍的下降。因为 finalize 被设计成在对象被垃圾收集前调用这就意味着实现了 finalize 方法的对象是个“特殊公民”JVM 要对它进行额外处理。finalize 本质上成为了快速回收的阻碍者可能导致你的对象经过多个垃圾收集周期才能被回收。总结final、finally 和 finalize 从英文字面角度来看看似很像实则 3 者在 Java 中没任何关系。final 是用来修饰类、方法、变量和参数的关键字被 final 修饰的对象不允许修改或替换其原始值或定义finally 是 Java 中保证重点代码一定要被执行的一种机制finalize 是 Object 类中的一个基础方法它的设计目的是保证对象在被垃圾收集前完成特定资源的回收的但其执行“不稳定”且有一定的性能问题已经在 JDK 9 中被设置为弃用的方法了。参考 鸣谢《Java核心技术面试精讲》关注公众号Java面试真题解析查看更多 Java 面试题。