如何让变量像数组一样运行?

时间:2013-05-15 21:33:46

标签: java arrays variables

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

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)