關於Static程式碼塊、匿名程式碼塊、構造器的小擴充

始於學習中無法自拔發表於2020-11-22

關於Static靜態程式碼塊、匿名程式碼塊、構造器(構造方法)小擴充

對於Static靜態程式碼塊、匿名程式碼塊、構造器(構造方法)有以下幾個注意事項。
靜態程式碼塊:
  1. 靜態程式碼塊是與類一起載入的,它是在另外兩個程式碼塊之前執行的,並且只執行一次;
  2. 在靜態程式碼塊之後執行匿名程式碼塊,其次是構造器。

構造器

  1. 構造方法是一種特殊的方法,即使不顯示也是預設存在的,其構造方法名必須與類名相同(包括大小寫);
  2. 構造方法一般用於初始化物件;
  3. 構造方法不能被繼承,且不能static、final、abstract等的一些修飾符修飾。

匿名程式碼塊

  1. 匿名程式碼塊有點類似於構造方法,是預設存在的且在工作方法之前的;

  2. 匿名程式碼塊可以用來賦初值(但一般不建議用它來賦初值)。

    我們來寫程式碼驗證一下:

    public class OoStatic {
        
        {
            System.out.println("這是一個匿名程式碼塊!");
        }
        
        static {
            System.out.println("這是一個靜態程式碼塊!");
        }
    
        public OoStatic() {
            System.out.println("這是一個構造器!");
        }
    
        public static void main(String[] args) {
            /*
            //OoStatic s1 = new OoStatic();
            //System.out.println("===========");
            //OoStatic s2 = new OoStatic();
            當我們沒有進行OoStatic s1 = new OoStatic();操作時,程式程式載入了類,但不會執行匿名程式碼塊以及構造器,然而靜態程式碼塊是與類一起載入的,因此會有一個輸出:
            其結果為:這是一個靜態程式碼塊!
             */
    
            //這裡我們對OoStatic類進行了兩次建立但是static靜態程式碼塊只執行了輸出了一次,表明靜態程式碼塊只能執行一次
            OoStatic s1 = new OoStatic();
            System.out.println("===========");
            OoStatic s2 = new OoStatic();
            /*
            輸出結果為:這是一個靜態程式碼塊!
                      這是一個匿名程式碼塊!
                      這是一個構造器!
                      ===========
                      這是一個匿名程式碼塊!
                      這是一個構造器!
            */
        }
    }
    

相關文章