Java 无法更改变量值

Java 无法更改变量值,java,Java,所以,我正在制作一个简单的程序,使用两个类 第一个类包含以下内容: 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 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)。这是怎么可能的?我该如何解决


感谢使用
this.x
引用类的成员变量
x
x本身指的是局部变量。

x
在这里得到。您使用了两个同名的变量,因此只有内部变量(此时方法的输入)是可访问的,并且
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;
}

x=changexvalue(x)的可能重复在您的方法中,您在哪里执行
x=x+2令人困惑。您是否认为您正在将变量
x
x
的值传递给
changexvalue
方法?你知道Java总是这样吗?如果它不是静态的,你怎么能访问
B.main
中的
a
?您是否简化了代码并删除了太多内容?您如何可能使用来自静态主函数的(非静态变量)?我尝试了代码,一切正常:2您在谈论哪个局部变量。构造函数中没有局部变量x。详细说明:在
changexvalue
中,正在更改/返回的
x
是局部
x
(参数),而不是实例变量
x
。另一种修复方法是为局部变量使用不同的名称。getxvalue()方法或changexvalue方法上的.x是否为?@user3680043:使用不同的名称,而不仅仅是
x
y
就足够了,没关系。该方法返回本地
x
的值,然后构造函数将该值分配给实例变量
x
。或者只返回y+2。并且从构造函数调用成员函数无论如何都是不好的做法。这不是原因,即使x在changexvalue中被隐藏,它也应该在A()中被覆盖,因为没有局部x变量。@Bathsheba为什么不好的做法?如果它是最终的和私有的,则不坏的原则