Java 靜態(tài)常量與靜態(tài)變量

靜態(tài)常量和靜態(tài)變量是Java中常見的兩種賦值的形式,它們的用法十分相似,那么,它們有什么區(qū)別呢?讓我們來分析一下。
1.靜態(tài)變量
Java創(chuàng)建一個靜態(tài)變量的方式如下:

public static int a = 1;

創(chuàng)建的方式很簡單,現(xiàn)在主要看jvm生成靜態(tài)變量的流程:
1.jvm類加載進行到準備階段的時候,會初始化靜態(tài)變量,注意,這里的初始化是指賦值為0或者null(默認值),而不是代碼中指定的值,如上例,jvm在此階段只是將a賦值為0。
2.jvm類加載進行到初始化階段,此時會將靜態(tài)變量的值賦值為代碼中指定的值,如上例,jvm在此時將a的值賦值為1。
由此可見,靜態(tài)變量的賦值經(jīng)歷了兩個過程,一個是在jvm進行類加載到準備階段時,將靜態(tài)變量初始化為默認值,最后在jvm類加載進行到初始化階段時,再將代碼中指定的值賦值給靜態(tài)變量。
2.靜態(tài)常量
Java創(chuàng)建靜態(tài)常量的方式如下

public static final int a = 1;

與創(chuàng)建靜態(tài)變量的唯一區(qū)別就是多了個final關(guān)鍵字,但是jvm生成靜態(tài)常量的流程稍有不同:
1.jvm類加載到準備階段的時候,會直接將靜態(tài)常量的值直接賦值為代碼指定的值,因此,靜態(tài)常量的初始化完成的比靜態(tài)變量的早。
2.由于添加了final關(guān)鍵字,靜態(tài)常量在賦值以后就不能修改其值,這也符合靜態(tài)常量的特性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,162評論 2 9
  • 歐若拉在逆光處耀眼升起,這個熟悉世界的光與點又重新開始蘇醒,我知道,那些都已然變成昨日的事了。 真...
    輕雪一地閱讀 212評論 0 0
  • 原以為湖水你波瀾不驚 不管花落,無論風起。 卻偏偏留住了一千年也尋不到的仙影。 連太太都尋不到的李白, 連故鄉(xiāng)都留...
    等羊羊閱讀 215評論 0 0
  • 清歌一曲念紅顏 文/牽著影子去流浪 眼角,淌下最后一滴相思淚 琴聲風干,不再有如水的嗚咽 最后的也是...
    老影子閱讀 549評論 6 6

友情鏈接更多精彩內(nèi)容