final关键字在JVM中的理解
Posted waibizi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了final关键字在JVM中的理解相关的知识,希望对你有一定的参考价值。
我们先来看两段代码与运行结果,根据结果去分析解释一下
不加final关键字:
package com.waibizi; public class demo02 { public static void main(String[] args) { System.out.println(demo.test); } } class demo{ public static String test="我是demo类的一个测试字符串"; static { System.out.println("我是demo的静态代码块!!!"); } }
运行结果:
加了final
package com.waibizi; public class demo02 { public static void main(String[] args) { System.out.println(demo.test); } } class demo{ public static final String test="我是demo类的一个测试字符串"; static { System.out.println("我是demo的静态代码块!!!"); } }
结果:
可以看到这两个的运行结果的不同,加了final关键字的java程序并不会去主动加载demo这个class类。
分析结果:如果加入了常量关键字,也就是final关键字,JVM会把这个常量放到demo02这个类里面的常量池当中,因此并不会主动加载demo这个类
我们来验证一下这个分析对不对吧,使用cmd编译java文件,然后再把demo这个的class文件删除,然后我们再运行一下程序,看看怎么输出的
回车,出结果啦。
以上是关于final关键字在JVM中的理解的主要内容,如果未能解决你的问题,请参考以下文章
java 中的static和final怎么使用?它们的区别?