天天看點

類與對象,韓順平聽課筆記

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.對象機制練習,空指針異常

類與對象,韓順平聽課筆記