String对象是不可变的
总是会看到这样的描述“String对象是不可变的”。这句话是什么意思,为什么是这样的呢。
通过查看String类方法,可以发现类方法中没有方法可以修改对象本身的字符串,如果返回值中的字符串不同了,那是因为返回了新的对象,
而原对象仍然没有改变。我认为之所以说“String对象是不可变的”,是因为没有一个类方法可以修改对象本身的字符串内容。
根本原因可以看String的实现:
有一个成员变量 private final char value[]; 用于存储字符串的内容。
它是final类型,一旦初始化了不能被改变。
注意:如果需要一个可修改的字符串,应该使用StringBuffer 或者 StringBuilder。
否则会有大量时间浪费在垃圾回收上,因为每次试图修改都有新的string对象被创建出来。
浙公网安备 33010602011771号