无法更改变量值

时间:2014-05-27 13:56:12

标签: java

所以,我正在制作一个使用2个类的简单程序。

第一节包含:

public class A{
    private int x;

    public A(){
        x = changexvalue(x);
        System.out.println(x); //Check value
    }

    private int changexvalue(int x){
        x = x + 2;
        return x;
    }

    public int getxvalue(){
        return x;
    }
}

第二节包含:

public class B{

    public static void main(String [] args){
        A a = new A();
        System.out.println(a.getxvalue());
    }
}

所以,问题是这个。第一个输出(在A类中)打印2但B类输出显示0(我希望B类输出显示2)。这怎么可能,我该如何解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:0)

使用this.x来引用课程'成员变量xx本身就是指局部变量。

答案 1 :(得分:0)

x在这里得到了shadowed。您使用两个具有相同名称的变量,因此只有内部变量(此时方法的输入)是可访问的,并且x无法访问类的属性。

private int changexvalue(int x){
    x = x + 2;
    return x;
}

替换为

private int changexvalue(int y){
    x = y + 2;
    return x;
}

或使用this清楚说明您使用类的x属性以及使用方法的x输入变量的位置:

private int changexvalue(int x){
    this.x = x + 2;
    return this.x;
}