java對(duì)象初始化順序驗(yàn)證示例
public class Derive extends Base
{
private Member m1 = new Member("Member 1");
{
System.out.println("Initial Block()");
}
public Derive() {
System.out.println("Derive()");
}
private Member m2 = new Member("Member 2");
private int i = getInt();
private int getInt()
{
System.out.println("getInt()");
return 2;
}
public static void main(String[] args)
{
new Derive();
}
}
class Base
{
public Base()
{
System.out.println("Base()");
}
}
class Member
{
public Member(String m)
{
System.out.println("Member() "+m);
}
}
/*程序輸出:
Base()
Member() Member 1
Initial Block()
Member() Member 2
getInt()
Derive()
*/
得出結(jié)論如下:不考慮靜態(tài)成員的初始化,調(diào)用一個(gè)對(duì)象的構(gòu)造函數(shù)時(shí),程序先調(diào)用父類的構(gòu)造函數(shù)(可以通過(guò)super關(guān)鍵字指定父類的構(gòu)造函數(shù),否則默認(rèn)調(diào)用無(wú)參的構(gòu)造函數(shù),并且需要在子類的構(gòu)造函數(shù)的第一行調(diào)用),之后靜態(tài)成員變量的初始化函數(shù)和靜態(tài)初始化塊則按照在代碼當(dāng)中的順序執(zhí)行,成員變量如果沒(méi)有指定值的話則賦予默認(rèn)值,即基本數(shù)據(jù)類型為0或false等,對(duì)象則為null;最后調(diào)用自身構(gòu)造函數(shù)。
相關(guān)文章
Java 常見(jiàn)的限流算法詳細(xì)分析并實(shí)現(xiàn)
大數(shù)據(jù)量高并發(fā)訪問(wèn)時(shí),經(jīng)常出現(xiàn)服務(wù)或接口面對(duì)暴漲的請(qǐng)求而不可用的情況,甚至引發(fā)連鎖反映導(dǎo)致整個(gè)系統(tǒng)崩潰。此時(shí)你需要使用的技術(shù)手段之一就是限流,當(dāng)請(qǐng)求達(dá)到一定的并發(fā)數(shù)或速率,就進(jìn)行等待、排隊(duì)、降級(jí)、拒絕服務(wù)等。限流時(shí),常見(jiàn)算法是計(jì)數(shù)器、漏斗、令牌桶算法2022-04-04
Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解
這篇文章主要介紹了Spring中的監(jiān)聽(tīng)器SpringApplicationRunListener詳解,命名我們就可以知道它是一個(gè)監(jiān)聽(tīng)者,分析springboot啟動(dòng)流程我們會(huì)發(fā)現(xiàn),它其實(shí)是用來(lái)在整個(gè)啟動(dòng)流程中接收不同執(zhí)行點(diǎn)事件通知的監(jiān)聽(tīng)者,需要的朋友可以參考下2023-11-11
spring boot validation參數(shù)校驗(yàn)實(shí)例分析
這篇文章主要介紹了spring boot validation參數(shù)校驗(yàn),結(jié)合實(shí)例形式分析了spring boot validation進(jìn)行數(shù)據(jù)有效性驗(yàn)證的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11

