成員變量與局部變量的區別:
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);
}
}
}