我們先來看兩段代碼與運行結果,根據結果去分析解釋一下
不加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文件刪除,然后我們再運行一下程序,看看怎么輸出的




回車,出結果啦。

