成员变量与局部变量的区别:
概念:
1.成员变量:定义在类体中,方法外。作为"类成员存在的";
2.局部变量:定义在某个方法内,或者某个语句代码块内部;
class Student{
String name;//成员变量
int age;//成员变量
//-------------以下代码不能定义在类体中-------
// for(int i = 0;i < 10 ; i++){
// }
// if(){
// }
// System.out.println("aa");
//-------------------------------------------
//成员方法
void show(String s){//s -局部变量
int a = 10;//a - 局部变量
for(int i = 0;i < 10 ; i++){//i - 局部变量
}
}
}
1.定义的位置不同:
1).成员变量:定义在类体中,方法外;
2).局部变量:定义在某个方法内,或者某个语句代码块内部;
2.在内存中存储的位置不同:
1).成员变量:当new一个对象时,所有的成员变量会随着对象空间存储在"堆"中;
2).局部变量:当调用这个方法时,或者执行某个语句时,局部变量才会入栈,在"栈"中开辟空间。
3.初始化不同:
1).成员变量:当new一个对象时,会在堆中分配空间,并自动初始化。可以立即访问这些初始值;
整数:0
小数:0.0
字符:\u0000
布尔:false
引用类型:null
2).局部变量:必须显示的手动初始化,否则不能访问其值
class Student{
void show(){
int a;
System.out.println(a);//编译错误。未被初始化的变量
}
}
4.被清理的时机不同:
1).成员变量:随着"堆空间"的消失而消失;-->堆空间成为垃圾时,会被垃圾回收器清理;
2).局部变量:当局部变量所在的方法,或者代码块执行完毕,局部变量会被立即清理;
|
|