1:成員變數和區域性變數的區別(理解)
(1)在類中的位置不同
成員變數:類中方法外
區域性變數:方法定義中或者方法宣告上
(2)在記憶體中的位置不同
成員變數:在堆中
區域性變數:在棧中
(3)生命週期不同
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
(4)初始化值不同
成員變數:有預設值
區域性變數:沒有預設值,必須定義,賦值,然後才能使用
6:this關鍵字(掌握)
(1)代表當前類的引用物件
記住:哪個物件呼叫方法,該方法內部的this就代表那個物件
(2)this的應用場景:
a:解決了區域性變數隱藏成員變數的問題
7:構造方法(掌握)
(3)構造方法的注意事項
a:如果我們沒寫構造方法,系統將提供乙個預設的無參構造方法
b:如果我們給出了構造方法,系統將不再提供預設構造方法
如果這個時候,我們要使用無參構造方法,就必須自己給出。
推薦:永遠手動自己給出無參構造方法。
(5)標準案例
class student
public student(string name,int age)
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
}測試:
class studentdemo
}8:**:student s = new student();做了哪些事情?(理解)
(1)把student.class檔案載入到記憶體
(2)在棧記憶體為s開闢空間
(3)在堆記憶體為學生物件申請空間
(4)給學生的成員變數進行預設初始化。null,0
(5)給學生的成員變數進行顯示初始化。林青霞,27
(6)通過構造方法給成員變數進行初始化。劉意,30
(7)物件構造完畢,把位址賦值給s變數
10:static關鍵字(理解)
(1)靜態的意思。可以修飾成員變數和成員方法。
(2)靜態的特點:
a:隨著類的載入而載入
b:優先與物件存在
c:被類的所有物件共享
這其實也是我們判斷該不該使用靜態的依據。
舉例:飲水機和水杯的問題思考
d:可以通過類名呼叫
既可以通過物件名呼叫,也可以通過類名呼叫,建議通過類名呼叫。
(3)靜態的記憶體圖
靜態的內容在方法區的靜態區
(4)靜態的注意事項;
a:在靜態方法中沒有this物件
b:靜態只能訪問靜態(**測試過)
(5)靜態變數和成員變數的區別
a:所屬不同
靜態變數:屬於類,類變數
成員變數:屬於物件,物件變數,例項變數
b:記憶體位置不同
靜態變數:方法區的靜態區
成員變數:堆記憶體
c:生命週期不同
靜態變數:靜態變數是隨著類的載入而載入,隨著類的消失而消失
成員變數:成員變數是隨著物件的建立而存在,隨著物件的消失而消失
d:呼叫不同
靜態變數:可以通過物件名呼叫,也可以通過類名呼叫
成員變數:只能通過物件名呼叫
Java記憶體分配
大多數情況,物件在新生代eden區中分配。當eden去沒有足夠記憶體空間分配時,進行minor gc。大物件是指連續占用記憶體空間的物件,比如很長的字串以及陣列。用乙個年齡計數器,每次minor gc後存活的物件移動到survior空間,並且計數器加1.年齡計數器大於一定值 預設是15 將晉公升到老...
JAVA記憶體分配規則
物件分配規則 1.物件優先分配在eden 區,如果 eden 區沒有足夠的空間時,虛擬機器執行一次 minor gc。2.大物件直接進入老年代 大物件是指需要大量連續記憶體空間的物件 這樣做的目的是避免在eden 區和兩個 survivor 區之間發生大量的記憶體拷貝 新生代採用複製演算法收集記憶體...
類物件的記憶體分配
類的大小一般是指經過例項化後類物件的大小。1真空類 長度 1 class a 2空類 長度1,同真空類。class a public a a void fun 成員函式不會影響類的大小。3簡單類,長度4 class a 4有虛函式的類 長度 4 class a 注1 虛函式表 如果基類派生類定義了虛...