我意识到这可能是一个非常基本的问题,但我无法弄清楚。
说我有这个主要课程
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
?
答案 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
具有默认访问修饰符。