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()
*/
得出結論如下:不考慮靜態(tài)成員的初始化,調用一個對象的構造函數(shù)時,程序先調用父類的構造函數(shù)(可以通過super關鍵字指定父類的構造函數(shù),否則默認調用無參的構造函數(shù),并且需要在子類的構造函數(shù)的第一行調用),之后靜態(tài)成員變量的初始化函數(shù)和靜態(tài)初始化塊則按照在代碼當中的順序執(zhí)行,成員變量如果沒有指定值的話則賦予默認值,即基本數(shù)據(jù)類型為0或false等,對象則為null;最后調用自身構造函數(shù)。
相關文章
Spring集成Druid連接池及監(jiān)控配置的全過程
java程序很大一部分要操作數(shù)據(jù)庫,為了提高性能操作數(shù)據(jù)庫的時候,有不得不使用數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關于Spring集成Druid連接池及監(jiān)控配置的相關資料,需要的朋友可以參考下2021-09-09Spring中的@Conditional注解實現(xiàn)分析
這篇文章主要介紹了Spring中的@Conditional注解實現(xiàn)分析, @Conditional是Spring 4出現(xiàn)的注解,但是真正露出價值的是Spring Boot的擴展@ConditionalOnBean等,需要的朋友可以參考下2023-12-12基于Spring Boot不同的環(huán)境使用不同的配置方法
下面小編就為大家分享一篇基于Spring Boot不同的環(huán)境使用不同的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Springboot?hibernate-validator?6.x快速校驗示例代碼
這篇文章主要介紹了Springboot?hibernate-validator?6.x校驗,本文以6.2.1.Final版本為例解決了log4j版本的漏洞問題,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-12-12