我知道Java系统将字符串视为不可变类型,因为字符串总是以其固定长度初始化。另一个原因是Java希望在许多安全线程中创建任何字符串,这是任何用户都不会修改的。但是,因为我真的想学习一个完整的清单,列出为什么Java的字符串是不可变的,所以我想知道上面的其他原因是否还有其他原因?
答案 0 :(得分:1)
另一个原因是效率:如果字符串是可变的,每次调用Class.getName
,System.getProperty
或基本上任何返回字符串的方法都必须创建一个新的副本。如果没有,您可以执行以下操作:
"".getClass().setCharAt(11, 'p')
从那时起,java.lang.String
类将被称为java.lang.Spring
。