private static int test[] =new int[]{2};
public static void main(String[] args) {
System.out.println(test[0]);
test(test);
System.out.println(test[0]);
}
private static void test(int[] test3) {
test3[0]=test3[0]+12;
}
印刷:
2
14
如何在不使用数组的情况下实现此目的?如果我使用
private static int test = 2
或
private static Integer test = 2
它停留在2
答案 0 :(得分:0)
您需要对变量本身进行分配:
private static int test = 2;
public static void main(String[] args) {
System.out.println(test);
test = test(test);
System.out.println(test);
}
private static int test(int test) {
return test+12;
}
或者,没有方法调用:
private static int test = 2;
public static void main(String[] args) {
System.out.println(test);
test += 12 // this is the same as: test = test+12
System.out.println(test);
}
答案 1 :(得分:0)
最好的方法是改变方法,不要像这样做副作用。像
这样的东西private static int addTwelve(int value) {
return value + 12;
}
然后在方法返回时分配值
test = addTwelve(test); //or just 'test += 12;' in this case
由于java使用pass-by-value语义,因此将整数的值传递给方法而不是变量(或对变量的引用)。当您更改方法中的变量时,方法中仅 更改。它与数组一起使用的原因是数组是一个对象,当以对象作为参数调用方法时,将复制对象的引用。
这也意味着您可以创建一个具有值作为属性的类,并使用该类的实例调用test
方法。它可能看起来像这样
public class TestClass {
private int test = 2;
//more if you need to.
public void setTest(int value) {
this.test = value;
}
public int getTest() {
return this.test;
}
}
方法:
private static void test(TestClass x) {
x.setTest(x.getTest() + 12);
}
可以在addTwelve
中创建TestClass
方法,或者甚至更好(取决于课程的用例)和类addValue(int value)
。