Java中例項初始化是什麼?
阿新 • • 發佈:2019-02-15
在這篇文章中,首先用一個例子來說明什麼是例項變數的初始化,例項初始化和靜態初始化。然後再解釋例項初始化是怎樣執行的。
1.執行順序
上面的例項初始化包含一個print語句。要了解它是如何執行的,我們可以把它作為一個變數賦值語句(例如b = 0),那麼這將不難理解。
而不是
3.例項初始化什麼時候有用?
使用例項初始化是罕見的,但它仍然可以成為有用的替代例項變數初始化的一個選擇,如果:
(1)初始化程式碼必須處理異常;
(2)執行無法用例項變數初始化來的計算。
當然,這樣的程式碼可以寫在建構函式裡。但是,如果一個類有多個建構函式,你就必須在每個建構函式裡重複這段程式碼。
用例項初始化,你可以只編寫一次程式碼,無論什麼建構函式被用來建立物件,都將會被執行。(我想這只是一個概念,它沒有經常被使用。)
還有一種例項初始化很有用的情況是是匿名內部類,不能宣告任何建構函式。(這會是放置日誌功能的一個好地方呢?)
1.執行順序
看看下面的類,你知道哪一個最先被執行?
2.Java例項初始化是怎樣執行的?public class Foo { //instance variable initializer String s = "abc"; //constructor public Foo() { System.out.println("constructor called"); } //static initializer static { System.out.println("static initializer called"); } //instance initializer { System.out.println("instance initializer called"); } public static void main(String[] args) { new Foo(); new Foo(); } } 輸出: static initializer called instance initializer called constructor called instance initializer called constructor called
上面的例項初始化包含一個print語句。要了解它是如何執行的,我們可以把它作為一個變數賦值語句(例如b = 0),那麼這將不難理解。
而不是
int b = 0
,你可以寫成int b;
b = 0;
3.例項初始化什麼時候有用?
使用例項初始化是罕見的,但它仍然可以成為有用的替代例項變數初始化的一個選擇,如果:
(1)初始化程式碼必須處理異常;
(2)執行無法用例項變數初始化來的計算。
當然,這樣的程式碼可以寫在建構函式裡。但是,如果一個類有多個建構函式,你就必須在每個建構函式裡重複這段程式碼。
用例項初始化,你可以只編寫一次程式碼,無論什麼建構函式被用來建立物件,都將會被執行。(我想這只是一個概念,它沒有經常被使用。)
還有一種例項初始化很有用的情況是是匿名內部類,不能宣告任何建構函式。(這會是放置日誌功能的一個好地方呢?)
原文: