Java 包装类的实例是否可变?
参考答案:
Java 的包装类(如 Integer
, Double
, Boolean
, Character
, Byte
, Short
, Long
, Float
和 Void
)是不可变的(immutable)。这意味着一旦创建了一个包装类的实例,其内部的值就不能被更改。
例如,对于 Integer
类,如果你创建了一个 Integer
实例 Integer i = new Integer(10);
,那么这个 i
实例的值就永远是 10
,不能更改为其他值。尝试修改其值会抛出异常,例如 i.intValue() = 20;
会导致编译错误。
尽管包装类的实例是不可变的,但是包装类中的值是可以被赋给另一个变量的。例如,你可以创建一个新的 Integer
实例,其值为 20
,并将其赋给 i
:i = new Integer(20);
。但请注意,这并不意味着你更改了原始 Integer
实例的值,而是创建了一个新的 Integer
实例并将其引用赋给了 i
。
这种不可变性是 Java 包装类的一个重要特性,它有助于确保数据的安全性和一致性,因为一旦一个对象被创建,其状态就不能被更改。这在多线程编程中尤其重要,因为不可变对象不需要额外的同步机制来防止并发修改。