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

Is it possible to mutate an int through a method using 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?

没有。无论您在 mutableInt() 中做什么,x 的值都将保持 3。改变它的唯一方法是使方法 return 成为一个 int 并将其分配给 x,或者将 x 本身更改为可变对象(如 AtomicInteger)。

不是真的。 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);

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

如果您改为传递一个 Integer 对象,那么如果您在方法内部更改 Integer 的值,则方法外部的 Integer 值将被修改,只要它在方法的签名中不是 final 即可。

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