跳到主要内容

Java 包装类的实例是否可变?

参考答案:

Java 的包装类(如 Integer, Double, Boolean, Character, Byte, Short, Long, FloatVoid)是不可变的(immutable)。这意味着一旦创建了一个包装类的实例,其内部的值就不能被更改。

例如,对于 Integer 类,如果你创建了一个 Integer 实例 Integer i = new Integer(10);,那么这个 i 实例的值就永远是 10,不能更改为其他值。尝试修改其值会抛出异常,例如 i.intValue() = 20; 会导致编译错误。

尽管包装类的实例是不可变的,但是包装类中的值是可以被赋给另一个变量的。例如,你可以创建一个新的 Integer 实例,其值为 20,并将其赋给 ii = new Integer(20);。但请注意,这并不意味着你更改了原始 Integer 实例的值,而是创建了一个新的 Integer 实例并将其引用赋给了 i

这种不可变性是 Java 包装类的一个重要特性,它有助于确保数据的安全性和一致性,因为一旦一个对象被创建,其状态就不能被更改。这在多线程编程中尤其重要,因为不可变对象不需要额外的同步机制来防止并发修改。