1. 程式人生 > >03_2_JAVA中的面向對象與內存解析

03_2_JAVA中的面向對象與內存解析

per 添加 自動添加 空間 堆內存 {} clas 基本類型 運用

03_2_JAVA中的面向對象與內存解析

1. 成員變量

成員變量可以是Java語言中任何一種數據類型(包括基本數據類型和引用數據類型)

在定義成員變量時可以對其初始化,如果不對其初始化,Java使用默認的初始值。

如下列表:

成員變量類型

取值

byte

0

short

0

int

0

long

0L

char

‘\u0000’

float

0.0F

double

0.0D

boolean

false

所有引用類型

null

成員變量的作用範圍為整個類體。

2. 引用

Java語言中除基本類型之外的變量類型都稱之為引用類型。

Java中的對象是通過引用個對其操作的。

3. 如何在內存中區分類和對象

類是靜態的概念,代碼區

對象是new出來的,位於堆內存,類的每個成員變量在不同的對象中都有不同的值(除了靜態變量)而方法只有一份,執行的時候才占用內存。

4. 對象的創建和使用

必須使用new關鍵字創建對象。

使用對象(引用).成員變量或來引用對象的成員變量。

使用對象(引用).方法(參數列表)來調用對象的方法。

同一類的每個對象有不同的成員變量存儲空間。

同一類的每個對象共享該類的方法。

5. 構造方法(構造函數)

使用new + 構造方法創建一個新的對象。

構造函數是定義在Java類中的一個用來初始化對象的函數。

構造函數與類同名且沒有返回值。

例如:

public class Person {

int id;

int age;

Person(int n, int i) {

id = n;

age = i;

}

}

當沒有指定構造函數時,編譯器為類自動添加形如

類名() {} 的構造函數。

6. 約定俗成的命名規則

類名的首字母大寫

變量名和方法名的首字母小寫

運用駝峰標識

7. 調用過程演示

Test test = new Test();

int date = 9;

BirthDate d1 = new BirthDate(7,7,1970);

BirthDate d2 = new BirthDate(1,1,2000);

test.change1(date);

test.change2(d1);

test.change3(d2);

......

public void change1(int i) {

i = 1234;

}

public void change2(BirthDate b) {

b = new BirthDate(22, 2, 2004);

}

public void change3(BirthDate b) {

b.setDay(22);

}

技術分享圖片

1

技術分享圖片

2 date9傳給形參i i = 9

技術分享圖片

3 i 被設置為 1234

技術分享圖片

4 方法change1調用完畢之後,i值消失

技術分享圖片

5 調用change2 d1的值 傳給 b

技術分享圖片

6 b d1 指向同一對象

技術分享圖片

7 b 並賦予新值 重新指向另一對象

技術分享圖片

8 方法change2調用完畢之後, b消失,以及對象也消失 (堆裏面的對象,有可能不是馬上消失,而是在垃圾回收的時候,消失。)

技術分享圖片

9 調用change3 b被傳遞為d2的值,而和d2指向同一對象

技術分享圖片

10 day被改成22

技術分享圖片

11 change3調用完畢 b消失

03_2_JAVA中的面向對象與內存解析