java對象初始化順序驗證示例
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òu)造函數(shù)時,程序先調(diào)用父類的構(gòu)造函數(shù)(可以通過super關(guān)鍵字指定父類的構(gòu)造函數(shù),否則默認(rèn)調(diào)用無參的構(gòu)造函數(shù),并且需要在子類的構(gòu)造函數(shù)的第一行調(diào)用),之后靜態(tài)成員變量的初始化函數(shù)和靜態(tài)初始化塊則按照在代碼當(dāng)中的順序執(zhí)行,成員變量如果沒有指定值的話則賦予默認(rèn)值,即基本數(shù)據(jù)類型為0或false等,對象則為null;最后調(diào)用自身構(gòu)造函數(shù)。
相關(guān)文章
Spring中的監(jiān)聽器SpringApplicationRunListener詳解
這篇文章主要介紹了Spring中的監(jiān)聽器SpringApplicationRunListener詳解,命名我們就可以知道它是一個監(jiān)聽者,分析springboot啟動流程我們會發(fā)現(xiàn),它其實是用來在整個啟動流程中接收不同執(zhí)行點事件通知的監(jiān)聽者,需要的朋友可以參考下2023-11-11
spring boot validation參數(shù)校驗實例分析
這篇文章主要介紹了spring boot validation參數(shù)校驗,結(jié)合實例形式分析了spring boot validation進(jìn)行數(shù)據(jù)有效性驗證的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11

