我有以下代码片段:
class Phone { String phoneNumber = "123456789"; void setNumber () { String phoneNumber; phoneNumber = "987654321"; } } class TestPhone { public static void main(String[] args) { Phone p1 = new Phone(); p1.setNumber(); System.out.println (p1.phoneNumber); } }
我期望结果为“ 987654321”,但是我得到“ 123456789”,就像方法setNumber没有任何效果,任何人都可以帮助我理解
您在方法内重新声明phoneNumber变量,使类中的字段处于阴影中,因此对局部变量所做的任何更改都不会在带阴影的类字段中显示。不要这样 摆脱重复变量声明,以便在字段中看到在方法内所做的更改。
例如,更改此:
void setNumber () { String phoneNumber; // *** this is a local variable, visible ONLY in the method! phoneNumber = "987654321"; // this has no effect on the field }
对此:
void setNumber () { // String phoneNumber; phoneNumber = "987654321"; // this will change the field! }