成员变量与局部变量有什么区别?
查看完整题解
参考回答
直接回答
成员变量也称字段,声明在类体中,用来表达类状态或对象状态;局部变量声明在方法、构造器、代码块等局部范围内。字段可以使用相应的访问修饰符,并有默认初始值;局部变量不能随意加 public、private、static,且读取前必须满足明确赋值规则。
讲清原理
实例字段随所属对象保存状态,静态字段随相应运行时类保存类状态。局部变量的名字只在规定的作用域内有效,但它引用的对象可能被返回或存入其他地方,继续存在。
同名局部变量还可能遮蔽字段,可用 this 明确表示当前实例字段。var 可以用于满足条件的局部变量类型推断,不是任意字段声明的替代写法。
例子与易错点
class Point {
int x;
Point(int x) { this.x = x; }
int read() {
int copy = x;
return copy;
}
}
System.out.println(new Point(4).read()); // 4
构造参数 x 与字段 x 不是同一个变量。普通局部变量若只声明 int n; 就直接读取,会编译失败;不能拿字段默认值的规则解释它,也不能根据作用域结束推断对象立即被回收。
相关题:第 34 题、第 35 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。