很多朋友对这两个概念常年混淆,其实几句话就讲明白了,我们从以下几个角度来完整区分局部变量与成员变量
定义位置
- 局部变量是定义在方法中或语句块中。
如:
public static void printArray(int [] array){
int sum = 0; //局部变量
for(int i = 0; i < array.length; i++){
sum + = i;
}
}
- 成员变量则定义在类中方法外,也称类的属性
作用范围
- 局部变量:只限于方法内
- 成员变量:类中方法外,一般在初始位置定义
存储位置
- 局部变量:栈内存
- 成员变量:堆内存
默认值
- 局部变量:无,局部变量必须赋值
- 成员变量:有,且可不赋值
生命周期
- 局部变量:方法执行完毕被jvm回收
- 成员变量:由jvm通过垃圾回收机制来自动回收(程序不死,成员不灭)