OPK*_*OPK -1 java instance-variables local-variables
所以我正在测试一些代码,他们在这里:
public class Phone {
String phoneNumber = "1234";
void setNumber(){
String phoneNumber;
phoneNumber = "4321";
}
}
public class TestPhone {
public static void main(String[] args) {
// TODO Auto-generated method stub
Phone p1 = new Phone();
p1.setNumber();
System.out.println(p1.phoneNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
1234
为什么不4321呢?我叫setNumber所以phoneNumber应该分配给4321,我缺少什么?
局部变量phoneNumber以相同的名称隐藏实例变量.
Run Code Online (Sandbox Code Playgroud)void setNumber(){ String phoneNumber; phoneNumber = "4321"; }
所以这段代码设置了局部变量,不会改变实例变量.
如果要更改实例变量,则必须使用this.前缀消除歧义,如下所示:
void setNumber(){
String phoneNumber;
this.phoneNumber = "4321";
}
Run Code Online (Sandbox Code Playgroud)
......或者更好的是,只需完全删除无意义的局部变量......(就像你说@RobP!)