來說說Java中的例項初始化器
文首先給出個例子來探究下什麼是例項變數初始化器,什麼是例項初始化器,以及什麼是靜態初始化器。然後看看例項初始化器是怎麼工作的。
1. 執行的順序
先看看下面這段程式碼,你覺著哪部分會先被執行呢?
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
2. Java的例項初始化器是如何工作的?
上面的例子中的例項初始化器包含一段列印字元的程式碼。要理解它是如何工作的,我們可以把它想象成變數賦值的過程,這樣就不難理解了。
除了這麼賦值:
int b = 0;
還可以這麼寫:
int b;
b = 0;
因此,例項初始化器和例項變數初始化器就大同小異了。
3. 什麼時候會用到例項初始化器?
能用到實力初始化器的時候比較少。但有些時候還是一個例項變數初始化器的替代選擇,比如:
- 初始化程式碼必須處理異常情況
- 執行一個例項變數沒辦法進行的計算
當然,這些需求還是可以在建構函式中實現的。但是一個類有多個建構函式的話,你就得在每個建構函式裡面重複同樣的程式碼了。
寫在例項初始化器中的程式碼,無論你使用哪一個建構函式,例項初始化器中程式碼都會被執行(可能說的多,用的少吧)。
另一個例項初始化器的應用場景是匿名內部類,因為這種情況下根本就不能建立建構函式。(這可能是放置日誌程式碼的好地方?)
相關文章
- 來說說 Java 中的例項初始化器Java
- 淺談Java中的例項初始化器Java
- java中的單例模式,舉例說明。Java單例模式
- 說說Java裡的equals(中)- Java那些事兒Java
- Oracle例項恢復——說說前滾和回滾Oracle
- 你說說對Java中SPI的理解吧Java
- 先簡單說一說Java中的CopyOnWriteArrayListJava
- java 例項變數初始化Java變數
- 說說java的反射Java反射
- 以例項說明 OAuth2OAuth
- 【Java貓說】例項變數與區域性變數Java變數
- 面試官:來說一說Go語言的函式呼叫慣例面試Go函式
- 說說Vue 3.0中Treeshaking特性?舉例說明一下?Vue
- Java類初始化和例項化Java
- 好好說說Java中的常量池之Class常量池Java
- 大家都來說說jivejdon和jdonFramework中你想加入的功能Framework
- 例項解說Linux中fdisk分割槽使用方法(轉)Linux
- 說說Flutter中的SemanticsFlutter
- 說說Flutter中的RepaintBoundaryFlutterAI
- 說說Java裡的equals(上)Java
- 說說JavaScript中的事件模型JavaScript事件模型
- 以opencv為例說明cmake中的findpackage()OpenCVPackage
- java中靜態初始化塊,例項初始化塊,建構函式區別Java函式
- 程式碼說事 之 建立java物件的初始化順序Java物件
- 說說 Java 反射機制Java反射
- 反NP監視原理並有例項說明
- Java說Java
- django的初始化檔案說明Django
- 美團一面:說一說Java中的四種引用型別?Java型別
- 不聊webpack配置,來說說它的原理Web
- 說說Python中的閉包Python
- 面試官:說說Java物件的組成面試Java物件
- 說說 方舟編譯器編譯
- Java中的執行緒池用過吧?來說說你是怎麼理解執行緒池吧?Java執行緒
- 傳說中的資料結構_JAVA資料結構Java
- 說說在 Spring 中,如何基於 XML 來配置事務SpringXML
- 說說你對單例模式的理解?如何實現?單例模式
- 透過面試題來說說Promise面試題Promise