成员变量定义在类中方法外,属于对象,有默认值,生命周期与对象相同;2. 局部变量定义在方法或代码块内,必须显式初始化,作用域仅限所在块,随方法结束销毁。
在Java中,局部变量和成员变量是两种常见的变量类型,它们的作用范围和生命周期不同,使用方式也有区别。理解它们的差异并正确使用,对编写清晰、可维护的代码非常重要。
成员变量(也叫实例变量)是定义在类中、方法外的变量,属于类的实例(对象)。每个对象都有自己的一份成员变量副本。
特点:
class Person {
String name; // 成员变量
int age; // 成员变量
void display() {
System.out.println("姓名: " + name + ", 年龄: " + age);
}
}
在这个例子中,name 和 age 是成员变量,可以在 display() 方法中直接使用。
局部变量是定义在方法内部、构造器内部或代码块中的变量,只在所属的作用域内有效。
特点:
void calculate() {
int sum = 0; // 局部变量
for (int i = 1; i <= 5; i++) {
sum += i;
}
System.out.println("总和: " +
sum);
}
这里 sum 和 i 都是局部变量,只能在 calculate() 方法中使用。
当局部变量和成员变量同名时,局部变量会“遮蔽”成员变量。可以通过 this 关键字来明确访问成员变量。
示例:
class Student {
String name; // 成员变量
void setName(String name) {
this.name = name; // this.name 表示成员变量,name 是参数(局部变量)
}
}
上面代码中,参数 name 是局部变量,用 this.name 指向成员变量,避免混淆。