首頁  >  文章  >  Java  >  來說說Java中的實例初始化器

來說說Java中的實例初始化器

黄舟
黄舟原創
2017-02-07 11:00:581225瀏覽

本文首先給個例子來探討下什麼是實例變數初始化器,什麼是實例初始化器,以及什麼是靜態初始化器。然後看看實例初始化器是怎麼運作的。

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中的實例初始化器的內容,更多相關內容請關注PHP中文網(www.php.cn)! 🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn