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文件刪除,然后我們再運行一下程序,看看怎么輸出的

 

 

 

 

 

 

 

 

 

回車,出結果啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM