佛山企业网站建设公司,哪里可以做网站啊,个人网站设计目的,广告关键词戳蓝字“CSDN云计算”关注我们哦#xff01;作者#xff1a;乔戈里来源#xff1a;程序员乔戈里腾讯面试现场——————final 在 Java 中是一个保留的关键字#xff0c;可以声明变量、方法、类。什么是final变量 / 类 / 方法#xff1f;任何变量前被 final 修饰就是 fin… 戳蓝字“CSDN云计算”关注我们哦作者乔戈里来源程序员乔戈里腾讯面试现场——————final 在 Java 中是一个保留的关键字可以声明变量、方法、类。什么是final变量 / 类 / 方法任何变量前被 final 修饰就是 final 变量定义的类前被 final 修饰就是 final 类任何方法前被 final 修饰就是final方法。当用 final 修饰一个类时表明这个类不能被继承。你看看到图中箭头指向的地方那句英文翻译过来就是不能继承 Cat 类。如果把 final 关键字去掉就可以了。你看这样就不会报错了下面这段话摘自《Java编程思想》第四版第143页“使用 final 方法的原因有两个。第一个原因是把方法锁定以防任何继承类修改它的含义第二个原因是效率。在早期的Java实现版本中会将final方法转为内嵌调用。但是如果方法过于庞大可能看不到内嵌调用带来的任何性能提升。在最近的 Java 版本中不需要使用 final 方法进行这些优化了。“变量被 final 修饰就是就是 final 变量那么问题来了final 变量和普通变量到底有啥区别public class Main { public static void main(String[] args) { String a xiaomeng2; final String b xiaomeng; String d xiaomeng; String c b 2; String e d 2; System.out.println((a c)); System.out.println((a e)); }}变量a指的是字符串常量池中的 xiaomeng2变量 b 是 final 修饰的变量 b 的值在编译时候就已经确定了它的确定值换句话说就是提前知道了变量 b 的内容到底是个啥相当于一个编译期常量变量 c 是 b 2得到的由于 b 是一个常量所以在使用 b 的时候直接相当于使用 b 的原始值xiaomeng来进行计算所以 c 生成的也是一个常量a 是常量c 也是常量都是 xiaomeng2 而 Java 中常量池中只生成唯一的一个 xiaomeng2 字符串所以 a 和 c 是相等的d 是指向常量池中 xiaomeng但由于 d 不是 final 修饰也就是说在使用 d 的时候不会提前知道 d 的值是什么所以在计算 e 的时候就不一样了e的话由于使用的是 d 的引用计算变量d的访问却需要在运行时通过链接来进行所以这种计算会在堆上生成 xiaomeng2 ,所以最终 e 指向的是堆上的 xiaomeng2 所以 a 和 e 不相等。final方法比非final快一些final关键字提高了性能。JVM和Java应用都会缓存final变量。final变量可以安全的在多线程环境下进行共享而不需要额外的同步开销。使用final关键字JVM会对方法、变量及类进行优化。表情包出自微博不觉晓晓PS本故事纯属虚构—————END—————1.微信群添加小编微信color_ld备注“进群姓名公司职位”即可加入【云计算学习交流群】和志同道合的朋友们共同打卡学习2.征稿投稿邮箱liudancsdn.net微信号color_ld。请备注投稿姓名公司职位。推荐阅读官宣张小龙史上最长演讲 4小时3万字完整版回应微信的一切SparkAlluxio性能调优十大技巧有问有答 | 容器精华问答如何玩转容器服务Java 12 要来了“微信之父”张小龙我没去过龙泉寺代码“大换血”以太坊能耗将减少99%背后的故事从云计算到AINetApp的数据网络转型之道点击“阅读原文”打开 CSDN App 阅读更贴心喜欢就点击“好看”吧