Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

成员变量与局部变量有什么区别?

查看完整题解

参考回答

直接回答

成员变量也称字段,声明在类体中,用来表达类状态或对象状态;局部变量声明在方法、构造器、代码块等局部范围内。字段可以使用相应的访问修饰符,并有默认初始值;局部变量不能随意加 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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。