java 初始化一个实体对象_Java 对象初始化
編譯并運行該程序會有以下輸出:
Static Block
Employee Company:china soft
Non-Static Block
Employee phone:0755-51595599Employee(String)
Empoloyee()
下面我們來對結果做分析:?1?在代碼34行實例化對象時,?先對給靜態變量分配內存空間并初始化,然后執行靜態塊。?因此,在這里會輸出:?Static?Block? ?Employee?Company:china?soft? ? ? 而Employee?Company:china?soft的輸出也說明是先初始化靜態變量然后再執行靜態塊,否則company將為null。
2然后在內存中為Employee分配內存空間,并做默認初始化(即所有變量初始化為默認值,這里都初始化為null)。
3?默認初始化完成后,開始顯示初始化。即執行第5行,將phone初始化"0755-51595599",并且執行非靜態方法塊;因此在這里會有以下輸出:?Non-Static?Block?Employee?phone:0755-51595599
4?最后才調用默認構造函數,在默認構造函數中調用了帶參數的構造函數,所以在這里先輸出帶參數構造函數中的:Employee(String),然后才輸出:Empoloyee()。
上面的代碼中Manager繼承了前面寫的Employee類,當我們編譯并運行Manager類,會產生以下的輸出:
Static?Block?Employee?Company:china?soft?Sub?Static?Block?Manager?department:sale?Non-Static?Block?Employee?phone:0755-51595599?Employee(String)?Empoloyee()?Sub?Non-Static?Block?Manager?salary:8000?Manager(String)?Manager()
下面我們對結果做分析:
1?在行34實例化對象時,由于Manager繼承了Employee,所以先從父類Employee開始;先給父類靜態變量分配內存空間并初始化,然后執行父類靜態塊。
然后再給子類靜態變量分配內存空間并初始化,然后執行子類靜態塊,所以會得到以下輸出: Static?Block?Employee?Company:china?soft?Sub?Static?Block?Manager?department:sale
2然后在內存中為父類Employee分配內存空間,并做默認初始化;再為子類Manager分配內存空間,并做默認初始化。
3默認初始化完成后,從父類開始顯示初始化并執行非靜態方法塊和構造函數,然后再子類開始顯示初始化并執行非靜態方法塊和構造函數。
因此會產生以下的輸出:?Non-Static?Block?Employee?phone:0755-51595599?Employee(String)?Empoloyee()?Sub?Non-Static?Block?Manager?salary:8000?Manager(String)?Manager()
...............................
上面的執行完了 開始main()函數里的該干嘛干嘛
你永遠不知道博客園的排版有多丑
總結
以上是生活随笔為你收集整理的java 初始化一个实体对象_Java 对象初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java项目怎样提高性能_Java程序员
- 下一篇: java biginteger转int_