0

我只听说Java中的字符串不能是不可变的,我想知道除了字符串之外还有其他对象也是不可变的吗?

附带说明一下,C++ 中的字符串也是不可变的吗?

4

2 回答 2

3

许多原始类型是不可变的(Integer、Long、Boolean 等)。不变性不是在 java 中明确指出的东西,它实际上是一种语义契约。您可以通过将其成员声明为 final、在构造时分配它们并通过类的公共接口锁定访问来使任何类不可变。

C++ 中的字符串是以零字符结尾的字符数组。而已。尽管使用 const 可以帮助锁定访问权限,但这并没有保证不变性。

我想重点是 Java 中的许多东西都是不可变的,但只有文档和源代码才能真正向您证明这一点。

于 2013-03-13T01:43:52.580 回答
1

所有装箱的基元,例如 Integer,都是不可变的。

您可以自己创建不可变类 - 例如,使用其构造函数设置其变量的类,并且没有公共变量或设置器。

于 2013-03-13T01:44:09.317 回答