第十二、Java的成員變數與區域性變數的區別
成員變數與區域性變數的區別:
0、定義的位置上區別:
成員變數: 定義在方法之外,類之內的變數
區域性變數: 定義在方法之內的變數
1、應用範圍的區別
成員變數在整個類內都有效
區域性變數只在其宣告的方法內有效
2、生命週期的區別
成員變數: 它屬於物件,它隨著物件的建立而建立,隨著物件的消失而消失
區域性變數: 使用完馬上釋放空間。區域性變數在呼叫了對應的方法時執行到了建立該變數的語句時存在,區域性變數一旦出了自己的作用域
那麼馬上從記憶體中消失。
void show(int id){ for(inti=0;i<10;i++){ for(intj=0;j<10;j++){ System.out.println(id); } } }
這時候 id,i,j者是在方法內宣告的,全是區域性變數
j當裡層for迴圈執行它的生命週期開始,當裡層for結束,j消失
i當外層for迴圈執行它的生命週期開始,當外層for結束,j消失
id在方法被呼叫時開始,方法結束時,id消失.
3、 儲存位置的區別
成員變數屬於物件,它儲存在堆內,堆內的實體,當沒有引用指向其時,才垃圾回收清理
區域性變數存在棧記憶體中,當不在使用時,馬上就會被釋放。
4、 初始值的區別
成員變數它儲存在堆中,如果沒有賦初值,它有預設值。
1. 整數byte、short、int、long =0;
2. char='\uoooo';
3. boolean =flase;
4. String =null;
5. 類型別 =null;
6. 陣列 =null;
區域性變數,如果要想使用必須手動初始化。區域性變數是沒有預設的初始值的,必須要先初始化才能使用。
i. 方法中,引數列表中,語句中。
ii. 必須給初始化值,沒有初始值,不能使用
iii. 在棧記憶體中
5、作用上的區別:
1. 成員變數的作用是用於描述一類事物的公共 屬性的。2. 區域性變數的作用就是提供一個變數給方法內部使用而已。
//人類
class Person {
String name; //成員變數
//方法
public void eat(){
//區域性變數
int age ;
age = 12;
for(int i = 0 ; i< 5 ; i++){
System.out.println("hello world"+ age);
}
}
}
成員變數與區域性變數的區別: