java - Java 中的浅拷贝整数

标签 java variables

其他答案对我不起作用。我的问题是关于整数的。

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 实例。

i1i2 包含对同一 Integer 实例的引用。当你做的时候

i1 = 233;

这意味着i1引用了Integer类的另一个实例

如果您希望i1i2引用同一个实例,您可以使用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/

相关文章:

java - AspectJ + @Configurable

javascript - Javascript 是否使用动态名称解析?

java - 输入字段和将文本转换为数字

javascript - 单台计算机上的 Java 应用程序和 JavaScript 应用程序之间的高性能通信

java - Web 应用程序中的内容搜索

Java 和 Final 关键字的使用

PHP $this 变量

java - hibernate5 typeconfiguration 注册表类中的内存泄漏

eclipse - 不工作 - 将鼠标悬停在变量上以在 Eclipse 的调试透视图中查看值

javascript - jQuery全局变量问题