日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - Static 標(biāo)識(shí)的字段或者是代碼塊,真的是在類加載的時(shí)候初始化的嗎?

瀏覽:188日期:2024-01-13 18:47:13

問(wèn)題描述

class AAA { static {System.out.println('class AAA static block println'); // 并沒有打印此句 }}public class Main { public static void main(String[] args) {System.out.println('hello world!'); }}

一直以來(lái)都以為 static 標(biāo)識(shí)的代碼塊或者是字段,都是在類加載的時(shí)候就被執(zhí)行或者賦值了,但是這么一看....感覺自己的世界觀都要被刷新了。

所以此處是類沒有被加載嗎?還是說(shuō)我們一直以來(lái)認(rèn)為的,靜態(tài)代碼塊、字段都在類加載的時(shí)候被初始化的,這個(gè)觀點(diǎn)是錯(cuò)誤的?

在《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐 第2版》中找到一些線索,如下圖:java - Static 標(biāo)識(shí)的字段或者是代碼塊,真的是在類加載的時(shí)候初始化的嗎?

所以,照這么說(shuō),是在第一次主動(dòng)訪問(wèn)該類的時(shí)候執(zhí)行?小弟好生迷惑啊....大家快說(shuō)說(shuō)你們的觀點(diǎn)

問(wèn)題解答

回答1:

類初始化和對(duì)象初始化。

static包含的代碼塊和變量只有在類初始化的時(shí)候才執(zhí)行,而初始化的五種條件你也知道啦。

補(bǔ)充說(shuō)明清楚吧。首先,你即使放在同一個(gè).java文件中,編譯后,這還是兩個(gè)不同的class文件,不信你看看bin對(duì)應(yīng)的包下面生成的.class文件。第二,類初始化的時(shí)候,就會(huì)初始化類的靜態(tài)變量和運(yùn)行靜態(tài)代碼塊。所以,虛擬機(jī)規(guī)定了五種初始化的條件,比如使用了new,getstatic,putstatic指令,main函數(shù)所在的類,反射,父類等情況。而,除開這五種情況,是不能觸發(fā)類的初始化的。正如你代碼中所示Main.class中,并沒有任何關(guān)于AAA.class的調(diào)用或者父子關(guān)系或者反射。所以,AAA.class自然不會(huì)初始化。

可以看看的另一篇博客java類的加載過(guò)程

明白了嗎?

回答2:

-XX:+TraceClassLoading加上這個(gè)會(huì)發(fā)現(xiàn)沒加載AAA

回答3:

這里有兩個(gè)概念需要擼一下:

類加載機(jī)制

Java、編譯器、字節(jié)碼、JVM的規(guī)范和實(shí)現(xiàn)。

類的加載是通過(guò)類加載器(Classloader)完成的,加載的具體策略依賴JVM的具體實(shí)現(xiàn),總的來(lái)說(shuō)可以分兩種:

饑餓式加載,只要被其他類引用到了就加載。

懶惰式加載,當(dāng)類被訪問(wèn)的時(shí)候才加載。

Java、編譯器、字節(jié)碼、JVM有各自的規(guī)范,彼此通過(guò)規(guī)范協(xié)同工作:

編譯按把Java代碼編譯成規(guī)范的字節(jié)碼文件,每一個(gè)類(外部類、內(nèi)部類、匿名類)都會(huì)被編譯成一個(gè)單獨(dú)的字節(jié)碼文件(class文件),JVM加載類的時(shí)候就是從這些class文件中一個(gè)個(gè)的加載。

現(xiàn)在回到你的代碼:

在Java層,你把AAA、Main兩個(gè)類放在一個(gè)文件中,編譯器編譯后生成兩個(gè)class文件:AAA.class、Main.class。兩個(gè)類在代碼組織形式上是一起的,但是編譯后卻是獨(dú)立的,并且Main并沒有引用AAA,所以無(wú)論是哪種類加載方式都不會(huì)觸發(fā)對(duì)類AAA的加載,也就不會(huì)執(zhí)行AAA中的靜態(tài)代碼塊。

回答4:

真心感謝樓上熱心網(wǎng)友們的解答!

驗(yàn)證

AAA 類確實(shí)沒有被加載,只有 Main 類被加載(題干截圖:初始化條件第四條,主類被 jvm 自動(dòng)加載)

java -XX:+TraceClassLoading Main結(jié)論

類中 靜態(tài)字段|代碼塊 真的是在類加載的時(shí)候被初始化或者是執(zhí)行的!

延伸怎么知道類有沒有被 jvm 所加載?

這也是我一直糾結(jié)的問(wèn)題,一開始以為只要執(zhí)行了 javac 命令,類就被 jvm 加載了,其實(shí)不然,該命令只是將 .java 文件轉(zhuǎn)化成 jvm 能讀懂的 .class 文件而已。

那么到底怎么知道類有沒有被 jvm 所加載?據(jù) 《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐 第2版》 和廣大網(wǎng)友的熱心解答可知,并沒有明確的時(shí)機(jī)規(guī)定了啥時(shí)候會(huì)被加載!

但是!jvm 明確規(guī)定了類被初始化的時(shí)機(jī)-就是題干上截圖部分那四種!而類的加載是優(yōu)先于類初始化的,所以這里,我們暫且可以認(rèn)為這幾種情況就是觸發(fā)類加載的條件。

小弟愚昧,總結(jié)不妥之處,還麻煩大家指正!感謝

回答5:

把你的Main.java和AAA.java放在同一個(gè)文件夾里,

在main函數(shù)里寫

Class.forName('AAA');

執(zhí)行

回答6:

執(zhí)行main方法時(shí),只會(huì)加載Main類,Main類中并沒有使用到AAA類,并不會(huì)去加載AAA類,并不是說(shuō)把AAA和Main兩個(gè)類寫到同一個(gè)文件就會(huì)同時(shí)加載

回答7:

AAA這個(gè)類既沒有在其他地方new,也沒有對(duì)應(yīng)的去獲取或者設(shè)置靜態(tài)的字段,也沒有去invoke靜態(tài)方法。所以不會(huì)自動(dòng)初始化的。

回答8:

放在兩個(gè)類里面了,聲明為public的類中的mian開始執(zhí)行,那個(gè)類沒被用到自然不會(huì)被加載更別提初始化

標(biāo)簽: java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91麻豆精品| 久久久久午夜电影| 国产在线看片免费视频在线观看| 蜜臀av一区二区在线免费观看| 日本免费一区二区三区四区| 久久午夜精品一区二区| 欧美+日本+国产+在线a∨观看| 成人国产精品久久| 久久免费精品| 日韩精品一二区| 日韩欧美一区免费| 国产理论在线| 精品国产美女a久久9999| 国产日本精品| 国产欧美日韩视频在线| 国产精品97| 欧美美女一区| 国产91精品对白在线播放| av日韩中文| 日本蜜桃在线观看视频| 久久精品99久久久| 国产精品综合色区在线观看| 亚洲91在线| 青草久久视频| 亚洲深深色噜噜狠狠爱网站 | 欧美二区视频| 午夜欧美精品| 欧美精品自拍| 亚洲欧美日韩专区| 视频一区视频二区中文| 亚洲主播在线| 亚洲成人国产| 影音先锋久久| 亚洲精品精选| 国产精品亚洲综合色区韩国| 国产精品va| 蜜桃久久av一区| 四虎成人精品一区二区免费网站| 蜜桃av一区二区在线观看| 亚洲精品高潮| 精品成av人一区二区三区| 日韩欧美1区| 亚洲激情二区| 日本视频中文字幕一区二区三区| 日韩1区2区日韩1区2区| 青草av.久久免费一区| 欧美激情视频一区二区三区免费| 国产精品久久久久久久免费观看| 久久亚洲资源中文字| 99精品视频在线| 国产亚洲精品自拍| 国产精品一区二区三区美女 | 三上悠亚国产精品一区二区三区 | 国产精品黄色| 美女视频网站久久| 欧美+亚洲+精品+三区| 午夜在线视频一区二区区别 | 日韩欧美精品| 视频一区二区不卡| 欧美精品aa| japanese国产精品| 黄色成人91| 欧美日韩18| 日韩在线欧美| 亚洲久久视频| 色婷婷色综合| 亚洲精品免费观看| 狠狠躁少妇一区二区三区| 亚洲一区二区动漫| 国产一区二区三区探花| 视频一区视频二区在线观看| 色天使综合视频| 精品视频一区二区三区在线观看 | 欧美黄色一区二区| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产日韩欧美一区| 免费在线观看一区二区三区| 国产 日韩 欧美一区| 国产精品久久久久久久久久白浆 | 日本a口亚洲| 亚洲日本在线观看视频| 伊人久久婷婷| 不卡av一区二区| 欧美搞黄网站| 伊人精品一区| 久久影院午夜精品| 久久婷婷国产| 欧美日韩夜夜| 日本vs亚洲vs韩国一区三区二区| 黄色av一区| 免费av一区| 免费不卡中文字幕在线| 欧美丝袜一区| 久久精品卡一| 国产不卡一区| 福利一区视频| 高清不卡一区| 日韩av专区| 日韩欧美字幕| 91看片一区| 欧美日韩在线二区| 欧美 日韩 国产一区二区在线视频| 亚洲播播91| 久久久影院免费| japanese国产精品| 日韩视频二区| 男人的天堂亚洲一区| 亚洲精一区二区三区| 日韩精品久久久久久久软件91| 国产一区二区精品| 亚洲一区区二区| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲人成毛片在线播放女女| 国产精品毛片在线| 石原莉奈在线亚洲三区| 视频一区中文字幕精品| 91精品国产自产观看在线| 国产美女久久| 日产精品一区二区| 99久久夜色精品国产亚洲1000部| 久久精品青草| 亚洲免费高清| 亚洲精品影院在线观看| 国产精品亚洲欧美一级在线| 欧美伊人影院| 国产福利一区二区精品秒拍| 精品福利久久久| 91精品国产福利在线观看麻豆| 亚洲欧洲一区二区天堂久久| 日本精品久久| 国产不卡一区| 欧美日韩日本国产亚洲在线| 亚洲精品免费观看| 麻豆免费精品视频| 99精品国产一区二区三区| 日韩网站在线| 欧美欧美黄在线二区| 国产成人免费| 国产亚洲福利| 国产欧美日本| 欧美日韩精品免费观看视欧美高清免费大片 | 国产精品白浆| 久久激情网站| 亚洲久草在线| 国产精品一站二站| 中文字幕人成乱码在线观看 | 国产一区一一区高清不卡| 精品一区毛片| 日韩激情一二三区| 吉吉日韩欧美| 亚洲精品人人| 不卡福利视频| 日韩在线成人| 蜜桃av.网站在线观看| 午夜性色一区二区三区免费视频| 国产麻豆一区二区三区| 91欧美在线| 亚洲精选av| 日本а中文在线天堂| 亚洲天堂免费| 日韩欧美一区二区三区在线观看 | 国产精品麻豆久久| 亚洲性视频在线| 97国产精品| 88久久精品| 伊人影院久久| 电影91久久久| 蜜桃av一区二区| 亚洲欧洲美洲av| 日韩高清三区| 亚洲免费在线| 日韩综合在线| 欧美日韩夜夜| 视频一区免费在线观看| 亚洲www啪成人一区二区| 国产麻豆一区二区三区| 亚洲神马久久| 日韩欧美一区免费| 欧美激情视频一区二区三区免费 | 日韩网站中文字幕| 国产乱码精品| 蜜桃久久久久久| 婷婷成人在线| 在线天堂中文资源最新版| 日本午夜免费一区二区| 国产精品老牛| 激情欧美亚洲| 伊人久久在线| 精品欧美视频| 婷婷精品在线观看| 亚洲一区二区三区免费在线观看| 中文字幕在线视频久| 欧美国产中文高清| 国产三级精品三级在线观看国产| 99国产成+人+综合+亚洲欧美| 欧美日韩国产观看视频| 久久精品国产99国产| 欧美精品影院| 青青国产91久久久久久| 日本亚洲视频在线|