Java中static和static?final的區(qū)別詳解
1. 準(zhǔn)備測(cè)試代碼
package com.hgy; import java.util.Arrays; import java.util.List; public class hello { private static String name = "hello"; private static final String finalName = "finalName"; public static void main(String[] args) { System.out.println(name); } }
2. 利用idea中的插件jclasslib查看字節(jié)碼文件
找到method下面的此方法不是我們編寫(xiě)的,而是java自動(dòng)給我們添加上的用于執(zhí)行類(lèi)加載時(shí)靜態(tài)變量以及靜態(tài)代碼塊的內(nèi)容; 這里的字節(jié)碼命令很簡(jiǎn)單,就是加載了hello然后賦值給了那么最后返回了;此處你會(huì)發(fā)現(xiàn)并沒(méi)有final修飾的字段的初始化。實(shí)際上final字段修飾的已經(jīng)在編譯期間就確定了值不需要在加載的時(shí)候賦值
final字段的字節(jié)碼文件(刪除了其他干擾信息的字節(jié)碼文件)
- 此處可以發(fā)現(xiàn)在字節(jié)碼文件中已經(jīng)寫(xiě)明了ConstantValue: String finalName, 這也就代表編譯期間就已經(jīng)有值了
- static塊的內(nèi)容也就是上圖看到的內(nèi)容
{ public static final java.lang.String finalName; descriptor: Ljava/lang/String; flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL ConstantValue: String finalName static {}; descriptor: ()V flags: (0x0008) ACC_STATIC Code: stack=1, locals=0, args_size=0 0: ldc #6 // String hello 2: putstatic #7 // Field name:Ljava/lang/String; 5: return LineNumberTable: line 8: 0 } SourceFile: "hello.java"
3.總結(jié)
static修飾的字段的值,會(huì)在類(lèi)加載階段的初始化階段進(jìn)行內(nèi)容初始化static final字段的初始化在編譯期間就已經(jīng)完成
到此這篇關(guān)于Java中static和static final的區(qū)別詳解的文章就介紹到這了,更多相關(guān)static和static final的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
到此這篇關(guān)于Java中static和static final的區(qū)別詳解的文章就介紹到這了,更多相關(guān)static和static final的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot升級(jí)至2.4.0中出現(xiàn)的跨域問(wèn)題分析及修改方案
這篇文章主要介紹了Springboot升級(jí)至2.4.0中出現(xiàn)的跨域問(wèn)題分析及修改方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12mybatis xml注釋sql的注意事項(xiàng)及說(shuō)明
這篇文章主要介紹了mybatis xml注釋sql的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07使用jaxp進(jìn)行dom解析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了使用jaxp進(jìn)行dom解析的相關(guān)資料,需要的朋友可以參考下2017-08-08springboot實(shí)現(xiàn)異步任務(wù)
這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)異步任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05Spring中@Conditional注解的詳細(xì)講解及示例
這篇文章主要介紹了Spring中@Conditional注解的詳細(xì)講解及示例,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean,需要的朋友可以參考下2023-11-11Java讀取properties文件之中文亂碼問(wèn)題及解決
這篇文章主要介紹了Java讀取properties文件之中文亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12