陣列記憶體分析,成員變數和區域性變數

2022-08-20 19:21:10 字數 3256 閱讀 7577

class

student

student(string n)

//預設沒有交學費

boolean isfees = false

;

//交學費

void

fees()

void

show()

}class

studentdemo

;

//取出陣列裡的每乙個學生,分別呼叫他們交學費的行為

成員變數:

(字段) 例項字段(無static修飾)

類欄位(static修飾)

區域性變數:

形參方法區域性變數 定義時不給初始值,沒問題,但是不能使用,若要使用, 必須給定初始值。

**塊區域性變數{}

變數名首寫字母使用小寫,如果由多個單詞組成,從第2個單詞開始的其他單詞的首寫字母使用大寫。

如果區域性變數的名字和成員變數的名字相同, 要想在該方法中使用成員變數,必須使用關鍵字this

1

class

people 67

public

void

speak()

13}

1415

16public

class testthis

2223 }

成員變數:

1、成員變數定義在類中,在整個類中都可以被訪問。

2、成員變數隨著物件的建立而建立,隨著物件的消失而消失,存在於物件所在的堆記憶體中。

3、成員變數有預設初始化值。

區域性變數:

1、區域性變數只定義在區域性範圍內,如:函式內,語句內等,只在所屬的區域有效。

2、區域性變數存在於棧記憶體中,作用的範圍結束,變數空間會自動釋放。

3、區域性變數沒有預設初始化值 

在使用變數時需要遵循的原則為:就近原則

首先在區域性範圍找,有就使用;接著在成員位置找。

成員變數和類變數的區別

由static修飾的變數稱為靜態變數,其實質上就是乙個全域性變數。如果某個內容是被所有物件所共享,那麼該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於物件的特殊描述。

不同的物件的例項變數將被分配不同的記憶體空間, 如果類中的成員變數有類變數,那麼所有物件的這個類變數都分配給相同的一處記憶體,改變其中乙個物件的這個類變數會影響其他物件的這個類變數,也就是說物件共享類變數。

成員變數和類變數的區別:

1、兩個變數的生命週期不同

成員變數隨著物件的建立而存在,隨著物件的**而釋放。

靜態變數隨著類的載入而存在,隨著類的消失而消失。

2、呼叫方式不同

成員變數只能被物件呼叫。

靜態變數可以被物件呼叫,還可以被類名呼叫。

3、別名不同

成員變數也稱為例項變數。

靜態變數也稱為類變數。

4、資料儲存位置不同

成員變數儲存在堆記憶體的物件中,所以也叫物件的特有資料。

靜態變數資料儲存在方法區(共享資料區)的靜態區,所以也叫物件的共享資料。

static:★★★ 關鍵字,是乙個修飾符,用於修飾成員(成員變數和成員函式)。

特點:1、想要實現物件中的共性資料的物件共享。可以將這個資料進行靜態修飾。

2、被靜態修飾的成員,可以直接被類名所呼叫。也就是說,靜態的成員多了一種呼叫方式。類名.靜態方式。

3、靜態隨著類的載入而載入。而且優先於物件存在。

弊端:1、有些資料是物件特有的資料,是不可以被靜態修飾的。因為那樣的話,特有資料會變成物件的共享資料。這樣對事物的描述就出了問題。所以,在定義靜態時,必須要明確,這個資料是否是被物件所共享的。

2、靜態方法只能訪問靜態成員,不可以訪問非靜態成員。

因為靜態方法載入時,優先於物件存在,所以沒有辦法訪問物件中的成員。

3、靜態方法中不能使用this,super關鍵字。

因為this代表物件,而靜態在時,有可能沒有物件,所以this無法使用。

什麼時候定義靜態成員呢?或者說:定義成員時,到底需不需要被靜態修飾呢?

成員分兩種:

1、成員變數。(資料共享時靜態化)

該成員變數的資料是否是所有物件都一樣:

如果是,那麼該變數需要被靜態修飾,因為是共享的資料。 

如果不是,那麼就說這是物件的特有資料,要儲存到物件中。 

2、成員函式。(方法中沒有呼叫特有資料時就定義成靜態)

如果判斷成員函式是否需要被靜態修飾呢?

如果有訪問特有資料,那方法不能被靜態修飾。

如果沒有訪問過特有資料,那麼這個方法需要被靜態修飾。

成員變數和靜態變數的區別:

1、成員變數所屬於物件。所以也稱為例項變數。

靜態變數所屬於類。所以也稱為類變數。

2、成員變數存在於堆記憶體中。

靜態變數存在於方法區中。

3、成員變數隨著物件建立而存在。隨著物件被**而消失。

靜態變數隨著類的載入而存在。隨著類的消失而消失。

4、成員變數只能被物件所呼叫 。

靜態變數可以被物件呼叫,也可以被類名呼叫。

所以,成員變數可以稱為物件的特有資料,靜態變數稱為物件的共享資料。

成員變數和區域性變數

定義類其實就是在定義類中的成員 成員 成員變數 屬性,成員函式 行為 成員變數和區域性變數的區別 1.成員變數定義在類中,整個類中都可以訪問 區域性變數定義在函式 語句 區域性 塊中,只在所屬的區域有效 2.成員變數存在於堆記憶體的物件中。區域性變數存在於棧記憶體的方法中。3.存活時間不同 成員變數...

成員變數和區域性變數

成員變數 寫在 interence和 end之間大括號之間的變數 例項變數,屬性 注意 1.成員變數只能通過物件來訪問 2.成員變數不能離開類,離開類之後就不是成員變數 3.成員變數不能在定義的同時初始化 儲存 當前物件對應的堆得儲存空間中 堆區 特點 堆區儲存的資料不會自動釋放,只能手動釋放 區域...

成員變數和區域性變數

成員變數 區域性變數 在類內部定義的變數 在方法內部定義的變數 有訪問許可權修飾符 沒有訪問許可權修飾符 有靜態成員變數 沒有靜態區域性變數 系統可以自動為成員變數賦初值 系統不會為區域性變數賦初值 只要類在某個作用域中,其字段也 也稱成員變數 也在該作用域內 區域性變數存在於表示宣告該變數的塊語句...