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

您的位置:首頁技術文章
文章詳情頁

分析Java中的類加載問題

瀏覽:124日期:2022-08-09 18:10:05
目錄一、Java類的加載順序二、類加載過程三、被動引用中和類靜態初始化的關系四、類加載器雙親委派一、Java類的加載順序

引用1個網上的經典例子,并做稍許改動,以便大家更好地理解。

public class Animal { private int i = test(); private static int j = method(); static {System.out.println('a'); } Animal(){System.out.println('b'); } {System.out.println('c'); } public int test(){System.out.println('d');return 1; } public static int method(){System.out.println('e');return 1; }}public class Dog extends Animal{ {System.out.println('h'); } private int i = test(); static {System.out.println('f'); } private static int j = method(); Dog(){System.out.println('g'); } public int test(){System.out.println('i');return 1; } public static int method(){System.out.println('j');return 1; } public static void main(String[] args) {Dog dog = new Dog();System.out.println();Dog dog1 = new Dog(); }}

執行這段main程序,會輸出什么?

答案是

eafjicbhigicbhig

為了方便大家一個個細節去理解, 我換一種方式去提問。

Q: 什么時候會進行靜態變量的賦值和靜態代碼塊的執行?

A:

第一次創建某個類或者某個類的子類的實例 訪問類的靜態變量、調用類的靜態方法 使用反射方法forName 調用主類的main方法(本例子的第一次靜態初始化其實屬于這個情況,調用了Dog的main方法)

注: 類初始化只會進行一次, 上面任何一種情況觸發后,之后都不會再引起類初始化操作。

Q:初始化某個子類時,也會對父類做靜態初始化嗎?順序呢?

A:如果父類之前沒有被靜態初始化過,那就會進行, 且順序是先父類再子類。 后面的非靜態成員初始化也是如此。所以會先輸出eafj。

Q: 為什么父類的method不會被子類的method重寫?

A: 靜態方法是類方法,不會被子類重寫。畢竟類方法調用時,是必定帶上類名的。

Q: 為什么第一個輸出的是e而不是a?

A: 因為類變量的顯示賦值代碼和靜態代碼塊代碼按照從上到下的順序執行。

Animal的靜態初始化過程中,method的調用在static代碼塊之前,所以先輸出e再輸出a。

而Dog的靜態初始化過程中,method的調用在static代碼塊之后,因此先輸出f,再輸出j

Q: 沒有在子類的構造器中調用super()時,也會進行父類對象的實例化嗎?

A: 會的。會自動調用父類的默認構造器。 super()主要是用于需要調用父類的特殊構造器的情況。因此會先進行Animal的對象實例化,再進行Dog的對象實例化

Q: 構造方法、成員顯示賦值、非靜態代碼塊(即輸出c和h的那2句)的順序是什么?

A:

1.成員顯示賦值、非靜態代碼塊(按定義順序)

2.構造方法

因此Animal的實例化過程輸出icb(如果對輸出i有疑問,見下面一題)接著進行Dog的實例化,輸出hig

Q: 為什么Animal實例化時, i=test()中輸出的是i而不是d?

A:因為你真正創建的是Dog子類,Dog子類中的test()方法由于簽名和父類test方法一致,因此test方法被重寫了。此時即使在父類中調用,也還是用使用子類Dog的方法。除非你new的是Animal。

Q: 同上題, 如果test方法都是private或者final屬性, 那么上題的情況會有變化嗎??

A:

因為private和final方法是不能被子類重寫的。所以Animal實例化時,i=test輸出d。

總結一下順序:

1.父類靜態變量顯式賦值、父類靜態代碼塊(按定義順序)

2.子類靜態變量顯式賦值、子類靜態代碼塊(按定義順序)

3.父類非靜態變量顯式賦值(父類實例成員變量)、父類非靜態代碼塊(按定義順序)

4.父類構造函數

5.子類非靜態變量(子類實例成員變量)、子類非靜態代碼塊(按定義順序)

6.子類構造函數。

二、類加載過程

Q:類加載的3個必經階段是:

A:

1.加載(類加載器讀取二進制字節流,生成java類對象)

2.鏈接(驗證,分配靜態域初始零值)

3.初始化(前面的題目講的其實就是初始化時的順序)

更詳細的如下:

分析Java中的類加載問題

三、被動引用中和類靜態初始化的關系

Q:new某個類的數組時,會引發類初始化嗎?

像下面輸出什么

public class Test { static class A{public static int a = 1;static{ System.out.println('initA');} } public static void main(String[] args) {A[] as = new A[5]; }}

A:

new數組時,不會引發類初始化。什么都不輸出。

Q:引用類的final靜態字段,會引發類初始化嗎?

像下面輸出什么?

public class Test { static class A{public static final int a = 1;static{ System.out.println('initA');} } public static void main(String[] args) {System.out.println('A.a=' + A.a); }}

A: 不會引發。

不會輸出initA。 去掉final就會引發了。(注意這里必須是基本類型常量, 如果是引用類型產量,則會引發類初始化)

Q:子類引用了父類的靜態成員,此時子類會做類初始化嘛?

如下會輸出什么

public class Test { static class A{public static int a = 1;static{ System.out.println('initA');} } static class B extends A{static { System.out.println('initB');} } public static void main(String[] args) {System.out.println('B.a=' + B.a); }}

A:

子類不會初始化。打印initA,卻不會打印initB。

四、類加載器雙親委派

類加載時的雙親委派模型,不知道能怎么出題。。。反正就記得優先去父類加載器中看類是否能加載。

分析Java中的類加載問題

Bootsrap不是ClassLoader的子類,他是C++編寫的。而ExtClassLoader和AppClassLoader都是繼承自ClassLoader的

Q:java中, 是否類和接口的包名和名字相同, 那么就一定是同一個類或者接口?

A:錯誤。

1個jvm中, 類和接口的唯一性由二進制名稱以及它的定義類加載器共同決定。因此2個不同的加載器加載出來相同的類或接口時, 實際上是不同的。

以上就是分析Java中的類加載問題的詳細內容,更多關于Java 類加載的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
红杏一区二区三区| 久久亚洲风情| 久久国产乱子精品免费女| 影音先锋久久精品| 日韩精品午夜视频| 国产伦理久久久久久妇女| 国产精品白浆| 成人高清一区| 久久久久国产| 欧美日韩精品免费观看视频完整| 91久久午夜| 亚洲精品一级二级三级| 天堂成人国产精品一区| 日韩精品中文字幕吗一区二区| 亚洲美女91| 欧美国产日韩电影| 日韩av免费大片| 女主播福利一区| 亚洲精品麻豆| 久久久亚洲欧洲日产| 首页国产精品| 午夜在线播放视频欧美| 久久狠狠亚洲综合| 丝袜诱惑一区二区| 免费人成精品欧美精品| 美女高潮久久久| 亚洲婷婷在线| 日韩三级精品| 蜜桃视频在线网站| 日韩国产欧美在线视频| 国内不卡的一区二区三区中文字幕| 99视频精品全部免费在线视频| 久久亚洲二区| 一区二区精品伦理...| 一区二区三区四区精品视频| 国产精品一区毛片| 精品中文字幕一区二区三区av| 日本特黄久久久高潮| 久久久久网站| 日韩精品欧美大片| 久久激情一区| 国产福利一区二区精品秒拍| 免费av一区| 国产精品亚洲成在人线| 99视频精品| 成人国产综合| 日本高清久久| 欧美成人亚洲| 国产不卡精品| 日韩手机在线| 国产一区清纯| 精品美女在线视频| 亚洲精品美女| 黄色成人在线网址| 97国产精品| 国产精品美女在线观看直播| 日韩精品一级二级| 欧洲一区二区三区精品| 国产精品色在线网站| 一区二区91| 国产精品88久久久久久| 成人污污视频| 69堂精品视频在线播放| 午夜国产精品视频免费体验区| 国产精品久久久久久久免费观看| 91精品国产自产精品男人的天堂| 免播放器亚洲| 欧美91精品| 久久美女性网| 国产精品久久观看| 精品久久视频| 国产精品欧美三级在线观看| 免费看日韩精品| 欧美日韩精品一区二区视频| 国产aⅴ精品一区二区三区久久 | 国产精品毛片aⅴ一区二区三区| 日韩午夜黄色| 亚洲一级黄色| 久久精品影视| 久久麻豆精品| 天堂8中文在线最新版在线| 久久免费精品| 国产激情久久| 国产精品极品在线观看| 国产亚洲精品美女久久| 亚洲欧美日本国产| 亚洲在线久久| 亚洲日本免费电影| 综合欧美精品| 视频精品一区| 日韩高清中文字幕一区| 日韩欧美2区| 日韩精品免费观看视频| 蜜臀av国产精品久久久久| 在线午夜精品| 免费国产自线拍一欧美视频| 蜜臀久久久久久久| 亚洲另类av| 91九色综合| 国产极品久久久久久久久波多结野 | 人在线成免费视频| 久久久男人天堂| 日韩久久一区二区三区| 亚洲精品国产嫩草在线观看| 欧美日韩免费看片| 狠狠操综合网| 免费在线观看成人| 日本成人一区二区| 麻豆久久一区| 日韩大片在线播放| 好吊日精品视频| 日韩一级欧洲| 亚洲精品进入| 国产精品麻豆成人av电影艾秋| 久久香蕉网站| 日韩精品一卡| 综合亚洲自拍| 麻豆精品久久久| 欧美成a人免费观看久久| 欧美特黄一区| 91欧美极品| 神马午夜在线视频| 久久亚洲欧洲| 久久精品国产福利| 亚洲高清激情| 日本精品久久| 成人在线视频区| 尤物网精品视频| 日韩av一级片| 日韩电影免费网址| 亚洲三级视频| 黄色在线网站噜噜噜| 亚洲少妇在线| 国产日韩亚洲| 激情欧美一区二区三区| 日韩中文字幕亚洲一区二区va在线| 青青伊人久久| 999久久久免费精品国产| 亚洲色图国产| 正在播放日韩精品| 只有精品亚洲| 精品一区二区三区中文字幕| 午夜久久tv| 久久激五月天综合精品| 999视频精品| 国产精品激情电影| 婷婷综合社区| 久久中文字幕一区二区| 好看的亚洲午夜视频在线| 国产日韩欧美中文在线| 精品一区毛片| 精品国产99| 日韩欧美另类中文字幕| 久久久亚洲一区| 欧美国产另类| 亚洲午夜久久| 欧美日韩免费观看视频| 欧美日韩一区二区国产 | 久久久国产亚洲精品| 欧美片第1页综合| 亚洲国产一区二区三区在线播放| 国产精品777777在线播放| 黑丝一区二区三区| 四季av一区二区凹凸精品| 蜜臀av在线播放一区二区三区| 中文字幕人成乱码在线观看 | 色爱综合av| 国产欧美日韩在线一区二区| 日韩视频精品在线观看| 麻豆视频在线观看免费网站黄| 久久国产生活片100| 狠狠色狠狠色综合日日tαg| 国产一区二区三区精品在线观看| 综合日韩在线| 激情综合自拍| 麻豆视频在线观看免费网站黄| 国产欧美在线| 亚洲a成人v| 久久www成人_看片免费不卡| 日本欧美不卡| 天堂8中文在线最新版在线| 日韩不卡一二三区| 巨乳诱惑日韩免费av| 亚洲天堂成人| 久久久精品日韩| 精品国产免费人成网站| 老鸭窝一区二区久久精品| 欧美一区成人| 日韩精品三区四区| 亚洲精品乱码久久久久久蜜桃麻豆| 夜夜嗨一区二区| 亚洲少妇自拍| 噜噜噜躁狠狠躁狠狠精品视频| 久久一区二区中文字幕| 丝袜美腿诱惑一区二区三区| 国产精品99视频| 卡一精品卡二卡三网站乱码| 国产精品美女午夜爽爽| 国产视频网站一区二区三区| 日韩精彩视频在线观看|