如何从另一个类更新一个类中的变量

时间:2015-11-27 07:25:37

标签: java

我意识到这可能是一个非常基本的问题,但我无法弄清楚。

说我有这个主要课程

public class Main{

    public static void main(String[] args){
        int a = 0;
        AddSomething.addOne(a);
        System.out.println("Value of a is: "+String.valueOf(a));
    }
}

以下是AddSomething类和addOne()方法

public class AddSomething{

    public static void addOne(int a){

        a++;

    }
}

addOne方法没有添加任何内容

System.out.println("Value of a is: "+String.valueOf(a));
// Prints 0 not 1

如何在Add课程中制作a班级更新变量Main

3 个答案:

答案 0 :(得分:5)

addOne会收到a的副本,因此无法更改主要方法的a变量。

更改该变量的唯一方法是从方法返回一个值并将其分配回a

a = Add.addOne(a);

...

public int addOne(int a){
    return ++a;
}

答案 1 :(得分:2)

这就是因为java中的原始类型按值传递给方法。只有一种方法可以做你想要的是重新分配变量,例如:

public class Main{

    public static void main(String[] args){
        int a = 0;
        a = Add.addOne(a);
        System.out.println("Value of a is: "+String.valueOf(a));
    }
}

public class AddSomething{

    public static int addOne(int a){

    return a++;

    }
}

答案 2 :(得分:0)

我知道,Eran的回答是你们所有人都需要的。但只是为了表明另一种方式,发布这个答案。

public class Main
{
  static int a = 0;
  public static void main(String[] args)
  {
    AddSomething.addOne();
    System.out.println("Value of a is: "+a);
  }
}

AddSomething班..

public class AddSomething
{
    public static void addOne(){ Main.a++ };
}

AddSomething必须与Main类位于同一个包中,因为int a具有默认访问修饰符。