局部变量和实例变量具有相同的名称

时间:2020-08-25 22:07:44

标签: java

我不完全了解这种情况下发生的过程:

class SomeClass {

    int val = 50;
    String str = "default";

 public SomeClass(int val) {
        val = val;
    }
}

此语句中val = val究竟发生了什么?

2 个答案:

答案 0 :(得分:1)

所示的代码是错误的。这里的目的是将局部变量 val的值分配给实例变量 val。但是,如果没有限定符,则此代码只是将局部变量重新分配给它自己。如果将final添加到构造函数参数中,就会看到它。 您想要的是this.val = val。为了便于阅读,通常都使用相同的名称,但是用this来限定实例变量。 您还需要一本基本的Java书籍。

答案 1 :(得分:1)

此语句中val = val究竟发生了什么?

这会将局部变量val的值分配给它自己。要将本地val分配给实例val,请使用this关键字:

this.val = val;
相关问题