1

在我的课堂上,我有 field int count。我想根据变量的值创建一个新变量count,如下所示:int a = new Integer(count). 但是当我更新 count variable:count++时,变量a也会更新。那么如何创建非引用 int 变量呢?

4

4 回答 4

3

你不能用 Java 做到这一点。您最接近的选择是创建一个带有单个 int 的封闭类,并改为引用它:

class MutableInteger {
    public int value;
}

然后,稍后:

MutableInteger a = new MutableInteger();
a.value = 5;

MutableInteger b = a;
b.value++;

a.value++;

//since a.value is the same primitive as b.value, they are both 7

但是:这打破了 Java 中一系列普遍接受的最佳实践。您可能会寻找另一种方法来解决您真正的问题。

于 2012-04-07T15:12:52.827 回答
2

你描述的情况不可能真的发生。

试试这个代码:

int count = 15;
int a = new Integer(count);
count++;
Window.alert("a is "+ a + " and count is " + count); 

count已更新,a但没有。所以这意味着你在其他地方有错误。

于 2012-04-07T15:22:48.257 回答
1

尝试以下操作:

int a = count + 0;
于 2012-04-07T15:25:13.817 回答
0

你的问题有点误导。原因如下:

在 Java 中,原始值在复制时不会复制它们的引用。查看您的代码并寻找您正在执行附加步骤的位置。

的构造函数Integer使用这个:

this.integer = integer;
于 2012-04-07T23:24:37.567 回答