我只是听说Java中的字符串不能是不可变的,我想知道除了字符串之外还有其他对象是不可变的吗?
另外,C ++中的字符串也是不可变的吗?
答案 0 :(得分:3)
许多基本类型都是不可变的(整数,长整数,布尔值等)。不可变性不是java中明确指出的东西,它实际上是一个语义契约。您可以通过将其成员声明为final,在构造时分配它们以及通过类的公共接口锁定访问来使任何类不可变。
C ++中的String是一个以零字符结尾的字符数组。而已。虽然使用const可以帮助锁定访问权限,但它没有不可变性的承诺。
我想重点是Java中的许多东西都是不可变的,但只有文档和源代码才能证明这一点。
答案 1 :(得分:1)
所有盒装基元,例如Integer,都是不可变的。
您可以自己创建不可变类 - 例如,使用其构造函数设置变量的类,并且没有公共变量或setter。