page contents

String 和StringBuffer的区别?

王昭君 发布于 2023-03-02 13:40
阅读 2246
收藏 0
分类:Java开发
4447
Nen
Nen
- 程序员

String是immutable的,其内容一旦创建好之后,就不可以发生改变。

StringBuffer 是可以变长的,内容也可以发生改变

改变的原理是StringBuffer内部采用了字符数组存放数据,在需要增加长度的时候,创建新的数组,并且把原来的数据复制到新的数组这样的办法来实现。

更多细节可以参考 模仿StringBuffer的 MyStringBuffer 类是如何实现的。

请先 登录 后评论
4452
周明
周明

String和StringBuffer是Java中用于表示字符串的两个类,它们有以下几个区别:

  1. 可变性:String类是不可变的,一旦创建就无法修改;而StringBuffer类是可变的,可以添加、删除和修改其中的字符内容。

  2. 线程安全性:String类是线程安全的,多个线程可以同时访问和使用同一个String对象;而StringBuffer类是线程安全的,多个线程可以同时修改和操作同一个StringBuffer对象。

  3. 性能:由于String类的不可变性,每次对String对象进行修改操作时,都会创建一个新的String对象,旧的String对象则成为垃圾数据,这在频繁的字符串操作场景下会带来较大的性能开销。相比之下,StringBuffer类在进行字符串修改操作时不会创建新的对象,而是直接在原对象上进行修改,因此在频繁的字符串操作场景下具有更好的性能。

请先 登录 后评论