我不完全了解这种情况下发生的过程:
class SomeClass {
int val = 50;
String str = "default";
public SomeClass(int val) {
val = val;
}
}
此语句中val = val究竟发生了什么?
答案 0 :(得分:1)
所示的代码是错误的。这里的目的是将局部变量 val
的值分配给实例变量 val
。但是,如果没有限定符,则此代码只是将局部变量重新分配给它自己。如果将final
添加到构造函数参数中,就会看到它。
您想要的是this.val = val
。为了便于阅读,通常都使用相同的名称,但是用this
来限定实例变量。
您还需要一本基本的Java书籍。
答案 1 :(得分:1)
此语句中val = val究竟发生了什么?
这会将局部变量val
的值分配给它自己。要将本地val
分配给实例val
,请使用this
关键字:
this.val = val;