是否可以通过使用 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 这一事实并不重要,因为它只存在于方法的范围内。
我有一个方法:
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 这一事实并不重要,因为它只存在于方法的范围内。