1. 程式人生 > 其它 >類與變數,韓順平聽課筆記

類與變數,韓順平聽課筆記

1.類與物件(OOP)解決的問題:(資料管理,提升效率);
單獨變數儲存資訊,不利於資料的管理(將一個物件的資訊拆分了);
陣列儲存資訊,資料型別體現不出來(姓名,年齡都儲存在一個數組裡),通過下表獲取資訊,造成變數名字和內容的對應關係不明確(person[1]取出person.age),不能體現物件的行為;

2.類:自定義的資料型別,物件[屬性,行為]:具體的資料;類是物件的模板;

3.物件記憶體佈局,JVM分析;基本型別直接存放在堆中,引用型別在堆中存放地址,實際資料存放在方法區中的常量池;物件new時,會在方法區載入類資訊(屬性,行為);棧中存放物件引用cat(物件名,物件地址);new cat() 建立的物件空間才是真正的物件;

4.屬性,成員變數=屬性=field(欄位);屬性可以是基本資料型別或引用型別

5.屬性注意細節;1)屬性的定義:訪問修飾符 屬性型別 屬性名;2)基本資料型別或引用型別;3)屬性不賦值,有預設值,規則同陣列,0,0.0,\u0000,false,null

6.建立物件兩種形式:先聲明後建立,直接建立;
Cat cat; // 堆:cat——>[null]
cat = new Cat(); // 棧:建立一個記憶體空間,將地址引用給cat——>[0x1122]

7.類與物件記憶體分配機制

  • 載入Person類資訊(只加載一次):屬性資訊,方法資訊;Person p1
  • 堆中開闢空間,地址,屬性為預設值:age——>0,name——>null;new Person();
  • 堆中物件地址,返回給引用(棧中); p1——>[0x0011]
  • p1.age = 10; 將10放入堆中p1物件內,p1.age——>10
  • p1.name = "小明"; "小明"放入方法區的常量池中,地址放回給堆中p1物件,p1.name——>[0x0022]
  • Person p2 = p1; p2——>[0x0011],p2指向和p1相同的物件

8.Java記憶體結構:

  • 棧:一般存放基本資料型別(區域性變數)
  • 堆:存放物件(Cat cat,陣列等)
  • 方法區:常量池(常量,比如字串),類載入資訊

9.物件機制練習,空指標異常