字符串和不变性
不可变类型是在更改时在内存中创建对象的新版本而不是更改内存中现有对象的类型。最简单的例子是内置的 string
类型。
使用以下代码,将 world
添加到单词 Hello
上
string myString = "hello";
myString += " world";
在这种情况下,内存中发生的事情是,当你追加到第二行中的 string
时,会创建一个新对象。如果你在大型循环中执行此操作,则可能会导致应用程序出现性能问题。
string
的可变等价物是 StringBuilder
采取以下代码
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
当你运行它时,你正在内存中修改 StringBuilder
对象本身。