Java語言基礎-類中代碼塊結構的使用

package mk.bigdata.java8;
/*
*
* 類的成員之四:代碼塊(或初始化塊)
*
* 1.代碼塊的作用: 用來初始化類、對象
* 2.代碼塊如果有修飾的話,只能使用static
* 3.分類:靜態代碼塊    vs  非靜態代碼塊
*
* 4.靜態代碼塊
*       >內部可以有輸出語句
*       >隨着累的加載而執行,而且只執行一次
*       >作用:初始化類的信息
*       >如果一個類中定義了多個靜態代碼塊,則按照聲明的先後順序執行
*       >靜態代碼塊的執行要優先於非靜態代碼塊的執行
*       >靜態代碼塊內只能調用靜態的屬性、靜態的方法,不能調用非靜態的結構
*
*
* 5.非靜態代碼塊
*       >內部可以有輸出語句
*       >隨着對象的創建而執行
*       >每創建一個對象,就執行一次非靜態代碼塊
*       >作用:可以在創建對象時,對對象的屬性等進行初始化
*       >如果一個類中定義了多個非靜態代碼塊,則按照聲明的先後順序執行
*       >非靜態代碼塊內可以調用靜態的屬性、靜態的方法、或費靜態的屬性、非靜態的方法
*
*
*   對屬性可以賦值的位置:
*   ①默認初始化
*   ②顯式初始化
*   ③構造器中初始化
*   ④有了對象以後,可以通過"對象.屬性" 或 "對象.方法"的方式,進行賦值
*   ⑤在代碼塊中賦值
*
*
* */
public class BlookTest {
    public static void main(String[] args) {
        String  desc =  Person.desc;

        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println(p1.age);

        Person.info();


    }
}

class Person{
    //屬性
    String name;
    int age ;
    static  String desc = "我是一個人";


    //構造器
    public Person(){
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //static代碼塊
    static{
        System.out.println("hello,static block-1");
    }

    static{
        System.out.println("hello,static block-2");
    }


    //非static代碼塊
    {
        System.out.println("hello, block");
        age = 1;
    }
    public void eat(){
        System.out.println("喫飯");

    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public static void info(){
        System.out.println("我是一個快樂的人");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章