是否可以通过使用AtomicInteger的方法改变int?

时间:2016-09-12 17:52:23

标签: java atomicinteger

我有一个方法:

public static void MutableInt (int newValue) {
    AtomicInteger atomicInteger;
    atomicInteger = new AtomicInteger(10);
    newValue = atomicInteger.get();
}

然后在main中调用:

    int x=3;
    MutableInt(x);
    System.out.println("After invoking MutableInt method, x = " + x);

结果仍然是3。 是否有可能以这种方式改变int?

3 个答案:

答案 0 :(得分:0)

不。无论您在mutableInt()内执行什么操作,x的值都会保留3。更改它的唯一方法是使方法返回一个int并将其分配给x,或将x本身更改为可变对象(如AtomicInteger)。

答案 1 :(得分:0)

不是真的。 Java参数是通过值而不是通过引用传递的,因此修改方法内的变量不会对在其外部声明的变量执行任何操作。 你可以做点什么

public static int MutableInt (int newValue) {
    AtomicInteger atomicInteger;
    atomicInteger = new AtomicInteger(10);
    return atomicInteger.get();
}

int x = MutableInt(3);
System.out.println("After invoking MutableInt method, x = " + x);

答案 2 :(得分:0)

最重要的是,您将原语传递给方法,而不是对对象实例的引用。即使使用自动装配,如果将int变量设置为方法内的其他内容,由于您没有返回任何内容,因此不会更改方法范围之外的变量。

如果你传递了一个Integer对象,如果你在方法中更改了它,那么方法之外的Integer的值将被修改,只要它在方法的签名中不是最终的。

在方法中创建中间AtomicInteger并不重要,因为它只存在于方法的范围内。