其他答案对我不起作用。我的问题是关于整数的。
Integer i1 = new Integer(11);
Integer i2 ;
i2 = i1;
System.out.println(i1+" "+i2);
i1 = 233;
System.out.println(i1+" "+i2);
//~ 11 11
//~ 233 11
我想让 i1 和 i2 相关。
最佳答案
在java中java.lang.Integer
是不可变的。这意味着您无法更改 Integer 对象的值(以通常的方式)。您可以使用新值创建新的 Integer
实例。
i1
和 i2
包含对同一 Integer
实例的引用。当你做的时候
i1 = 233;
这意味着i1
引用了Integer
类的另一个实例
如果您希望i1
和i2
引用同一个实例,您可以使用AtomicInteger
,但是AtomicInteger
是为了不同的目的而制作的。
AtomicInteger i1 = new AtomicInteger(11);
AtomicInteger i2 ;
i2 = i1;
System.out.println(i1+" "+i2);
i1.set(233);
System.out.println(i1+" "+i2);
或者你可以制作一个包装
public static class IntegerWrapper {
private int value;
public IntegerWrapper(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public IntegerWrapper setValue(int value) {
this.value = value;
return this;
}
}
和代码
IntegerWrapper i1 = new IntegerWrapper(11);
IntegerWrapper i2 ;
i2 = i1;
System.out.println(i1.getValue()+" "+i2.getValue());
i1.setValue(233);
System.out.println(i1.getValue()+" "+i2.getValue());
关于java - Java 中的浅拷贝整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997078/