- 代码位置不同: 成员变量: 在类中声明的变量, 直接父级是类. 局部变量: 在方法中声明的变量
public class Test {
// 成员变量
private String name;
public void test() {
// 局部变量
String name = "你好鸭~";
}
}
- 内存区域不同: 成员变量在堆内存, 局部变量在栈内存 (不过实例化的对象还是在堆内存, 只是指针变量在栈内存, 即用完即生命周期结束)
- 默认值不同: 成员变量有默认值, 局部变量需要显式声明默认值
- 修饰符不同: 成员变量可以使用访问修饰符 (
public
/protected
/private
) 或static
修饰, 局部变量最多只能使用final
修饰 - 生命周期不同: 成员变量的生命周期跟随实例化的对象, 局部变量的生命周期跟随方法开始 / 结束