成员变量定义在类中方法外,有默认值、存于堆内存,生命周期与对象一致;2. 局部变量定义在方法或代码块内,无默认值、存于栈内存,必须显式初始化且作用域仅限其所在块。
在Java中,成员变量和局部变量是两种常见的变量类型,它们的作用范围、生命周期和存储位置都有明显区别。理解它们的关键在于搞清楚定义位置、访问方式以及使用场景。
成员变量定义在类中,但在方法、构造器或代码块之外。它们属于类的实例(对象)或类本身,用于表示对象的状态。
特点:
public class Person {
private String name; // 实例成员变量
private static int count = 0; // 静态成员变量
}
局部变量定义在方法、构造器或代码块内部,仅在该作用域内有效。
特点:
public void sayHello() {
String message = "Hello"; // 局部变量
for (int i = 0; i < 5; i++) { // i也是局部变量
System.out.println(message);
}
// message 和 i 只能在该方法内使用
}
从使用角度看,以下几个方面最易混淆:
当局部变量与成员变量同名时,局部变量优先。若要访问成员变量,需使用this关键字。
public class Student {
private String name;
public void setName(String name) {
this.name = name; // this.name 指成员变量,name 是参数(局部变量)
}
}
这种写法常见于setter方
法中,避免名称冲突。