1. 程式人生 > >Java類與物件--學習筆記

Java類與物件--學習筆記

在之前的的學習中從來沒有系統的做過筆記,這一次跟著李興華老師一起學習Java,我被他上課的風格所吸引,所以我決定將我所學到的內容系統的記錄下來,實際上也是在李老師的課上所記錄的學習筆記。這是我第一次寫部落格,有什麼不足之處還望各位讀者指正。

JAVA-類與物件

類與物件定義

程式碼示例:Person類的定義

class Person{
    //定義類中的屬性
    String name;
    int age;
    //
    public void show(){
        System.out.println("姓名:" + name + ";年齡:" + age);
    }
}

類本身不能使用,只有通過物件才可以使用。類(引用資料型別) 引用資料型別在使用之前必須開闢空間,而基本資料型別可以直接賦值。

物件的定義方法:
  • 宣告例項化物件: 類名稱 物件名稱 = new 類名稱() ;
  • 分步進行:
    • 宣告物件: 類名稱 物件名稱 = null ;
    • 例項化物件: 物件名稱 = new 類名稱() ;

程式碼示例:Person類的定義

class Person{
    //定義類中的屬性
    String name;
    int age;
    //
    public void show(){
        System.out.println("姓名:" + name + ";年齡:" + age\n);
    }
}

public class TestDemo{
    public static void main(String[] args) {
        //直接宣告例項化物件:
        Person heshuaixin = new Person(); 
        heshuaixin.name = "張三";
        heshuaixin.age = 19;
        heshuaixin.show();
        //分步進行:
        Person LuXiAn = null;
        LuXiAn = new Person();
        LuXiAn.name = "路西安";
        LuXiAn.age = “20";
        LuXiAn.show();
    }
} 

物件記憶體分析

  • 堆記憶體空間:儲存真正的資料;堆記憶體儲存的是物件的屬性資訊;
  • 棧記憶體空間:儲存的堆記憶體的地址,堆記憶體的操作權,可以理解為儲存的是物件名稱;

程式碼示例:觀察程式

class Person{  //定義一個類,類名稱的每個首字母單詞要大寫
    String name;  
    int age;
    public void show(){
        System.out.println("name:" + name + ",age:" + age + ".");
    }
}


public class TestDemo{
    public static void main(String[] args) {
        Person per1 = new Person();    //例項化物件
        per1.name = "LuXiAn";    //物件.屬性 = 內容
        per1.age = 18;    //物件.屬性 = 內容
        per1.show();
    }
}

記憶體分析: 在這裡插入圖片描述

引用傳遞初步

  • 一塊堆記憶體可以被多個棧記憶體所指向。

程式碼示例:觀察程式

class Person{  
    String name;  
    int age;
    public void show(){
        System.out.println("name:" + name + ",age:" + age + ".");
    }
}

public class TestDemo{
    public static void main(String[] args) {
        Person per1 = new Person();  //例項化物件
        Person per2 = new Person();  //例項化物件
        per1.name = "ZhangSan";
        per1.age = 19;   
        per2.name = "LuXiAn";    
        per2.age = 21;
        per2 = per1;     //引用傳遞
        per1.show();  //通過物件呼叫類中的方法
    }
}

記憶體分析: 在這裡插入圖片描述垃圾空間: 沒有任何棧記憶體指向的堆記憶體空間,所有的垃圾檔案將不定期被JAVA中的垃圾收集器(GC,Garbage Collecter)進行回收以實現空間的釋放。雖然提供了GC機制,但是開發中依舊務必控制好物件的數量。

下一次分享的內容會是類與物件的進一步分析,因為剛開始的緣故,難度會比較低,到後面會逐步增加難度的。 希望本文會對讀者有一些提升,文中如果有錯誤的地方還望指正。