一尘不染

使用方法后的Java结果与预期不符

java

我有以下代码片段:

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没有任何效果,任何人都可以帮助我理解


阅读 177

收藏
2020-12-03

共1个答案

一尘不染

您在方法内重新声明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!
}
2020-12-03