我的位置: 首頁 > 學(xué)習(xí)專區(qū) > JAVA技術(shù) > Java基礎(chǔ)之初始化(2)

Java基礎(chǔ)之初始化(2)

2016-02-16 12:24:54
來源:
[導(dǎo)讀] 前面一篇講到了對(duì)象創(chuàng)建過程、初始化相關(guān)函數(shù),并介紹了默認(rèn)初始化值,這篇文章我們繼續(xù)講解Java基礎(chǔ)初始化的相關(guān)內(nèi)容。四、初始化方法在定義類成員變量的地方為其賦值。例如:char ch=’x’;byte b=47;Depth d=new Depth(); 如果沒有為d指定初始值就嘗試使用它,就會(huì)
前面一篇講到了對(duì)象創(chuàng)建過程、初始化相關(guān)函數(shù),并介紹了默認(rèn)初始化值,這篇文章我們繼續(xù)講解Java基礎(chǔ)初始化的相關(guān)內(nèi)容。
四、初始化方法
在定義類成員變量的地方為其賦值。
例如:char ch=’x’;
byte b=47;
Depth d=new Depth();//如果沒有為d指定初始值就嘗試使用它,就會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤。
通過調(diào)用某個(gè)方法來提供初值:
例如:
public class MethodInit{
int i=f();
int f(){
Return 11;
}
}
構(gòu)造器初始化:
public class Counter{
int i;
Counter(){
i=7;
}
}
利用static塊進(jìn)行初始化:
static{
......
}
五、初始化順序:
無繼承情況的初始化順序:
靜態(tài)塊和靜態(tài)數(shù)據(jù)按定義的先后順序進(jìn)行初始化。
普通成員初始化。
構(gòu)造函數(shù)。
有繼承情況的初始化順序:
父類的靜態(tài)塊和靜態(tài)數(shù)據(jù)按定義的先后順序進(jìn)行初始化。
子類的靜態(tài)塊和靜態(tài)數(shù)據(jù)按定義的先后順序進(jìn)行初始化。
父類的普通成員初始化。
父類的構(gòu)造函數(shù)。
子類的普通成員初始化。
子類的構(gòu)造函數(shù)。
Static關(guān)鍵字不能應(yīng)用于局部變量,只能作用于域,如果一個(gè)域是靜態(tài)的基本類型域且沒有對(duì)它進(jìn)行初始化那么它就會(huì)獲得基本類型的標(biāo)準(zhǔn)初值,如果是一個(gè)對(duì)象的引用那么它的默認(rèn)初始化值就是null。
靜態(tài)初始化只有在必要時(shí)刻才會(huì)進(jìn)行,當(dāng)首次生成這個(gè)類的一個(gè)對(duì)象時(shí),或者訪問屬于那個(gè)類的靜態(tài)數(shù)據(jù)成員時(shí),才開始初始化。并且靜態(tài)初始化動(dòng)作僅執(zhí)行一次。
無繼承的初始化順序,代碼驗(yàn)證:
輸出如下所示:
1、靜態(tài)成員變量初始化
2、執(zhí)行static塊:
靜態(tài)塊變量初始化
3、普通成員變量初始化
4、構(gòu)造函數(shù)被調(diào)用
5、執(zhí)行成員方法
3、普通成員變量初始化
4、構(gòu)造函數(shù)被調(diào)用
5、靜態(tài)變量初始化只執(zhí)行一次
有繼承的初始化順序代碼驗(yàn)證:
輸出結(jié)果如下所示:
1、父類靜態(tài)成員變量初始化
2、執(zhí)行父類static塊:
父類靜態(tài)塊變量初始化
3、執(zhí)行子類static塊:
子類靜態(tài)塊變量初始化
4、子類靜態(tài)成員變量初始化
5、父類普通成員變量初始化
6、父類構(gòu)造函數(shù)被調(diào)用
7、子類普通成員變量初始化
8、子類構(gòu)造函數(shù)被調(diào)用
9、調(diào)用成員方法
5、父類普通成員變量初始化
6、父類構(gòu)造函數(shù)被調(diào)用
7、子類普通成員變量初始化
8、子類構(gòu)造函數(shù)被調(diào)用
評(píng)論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
中文字幕在线你懂得 | 亚洲做性视频大全 | 亚洲国产精品久久 | 亚洲伊人精品午夜在线视频 | 亚洲成a人片在线观 | 日韩中文字幕一区二区 |