1. 程式人生 > >java構造程式碼塊的使用

java構造程式碼塊的使用

一、構造程式碼塊

  1. 形式: 只用{}包圍的程式碼塊。
  2. 作用:給所有物件進行統一的初始化。
  3. 執行順序:建立物件時,會先執行構造程式碼塊,然後再執行建構函式
  4. 構造程式碼塊和建構函式的比較:
    相同點:都是給物件進行初始化的。
    不同點:構造程式碼塊是給所有物件進行統一的初始化。建構函式是給對應的物件初始化。

二、使用

例1:測試構造程式碼塊的執行順序

以下程式碼建立了兩個物件。每個物件建立過程中,都是先執行了構造程式碼塊,然後再執行對應的建構函式。

package com.initialization;

/**
 * 構造程式碼塊:對所有物件初始化,先於建構函式
 */
public class ConstructCodeBlock {
    public static void main(String[] args) {
        Person per1=new Person();
        System.out.println();
        Person per2=new Person("有參");
    }
}

class  Person{
    {
        System.out.println("構造程式碼塊在執行");
    }

    Person(){
        System.out.println("無參建構函式在執行");
    }

    Person(String str){
        System.out.println("有參建構函式在執行");
    }
}

結果:
堅持比努力更重要

例2:構造程式碼塊的實際使用

package com.initialization;

/**
 * 構造程式碼塊的實際使用
 */
public class ConstructBlock {
    public static void main(String[] args) {
        System.out.println("****建立第一個學生****");
        Student stu1=new Student("小明");
        System.out.println();
        System.out.println("****建立第二個學生****");
        Student stu2=new Student(13);
    }
}

class Student{
    String area;
    String name;
    int age;
    {
        area="北京";
        System.out.println("所在地區:"+area);
    }
    Student(String name){
        this.name=name;
        System.out.println("姓名:"+this.name);
    }
    Student(int age){
        this.age=age;
        System.out.println("年齡:"+this.age);
    }
}

結果:
堅持比努力更重要

三、總結

構造程式碼塊用於物件的初始化。
所有物件建立過程中都會執行構造程式碼塊。
構造程式碼塊執行後,才執行建構函式