Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别

发布于 2025-01-08 13:03:55 字数 1041 浏览 10 评论 0

两个比较好的回答:

NO1

  1. CharSequence 接口:是一个字符序列.String StringBuilder 和 StringBuffer 都实现了它。
  2. String 类:是常量,不可变。
  3. StringBuilder 类:只可以在单线程的情况下进行修改(线程不安全).
  4. StringBuffer 类:可以在多线程的情况下进行改变(线程安全).
  5. Stringbuilder 比 StringBuffer 效率高,应该尽量使用 StringBuilder.

NO2

  1. CharSequence 是一个 java 接口,代表一个 char 序列,String、StringBuilder、StringBuffer 都实现了该接口,CharSequence 实例通过调用 toString 方法可转化为 String 对象。
  2. String 类是 final 的,不可派生子类,其内部封装的是 char[],另外,android 下的 String 类和 jdk 中的 String 类是有区别的,android 下的 String 类中部分 API 通过 native 方法实现,效率相对高一些。
  3. String 使用'+'进行字符串拼接时,在编译期会转化为 StringBuilder#append 方式
  4. String 在内存中有一个常量池,两个相同的串在池中只有一份实例(String s = "abc"方式或者 String#intern 方式会在池中分配),使用 new String 方式会在 heap 中分配,每次创建都是一个全新的实例。
  5. StrigBuilder & StringBuffer 都是可扩展的串,提供了一系列 apped 方法用于拼接不同类型对象
  6. StringBuffer 于 jdk1.0 引入,线程安全(多线程场景下使用),StringBuilder 于 jdk1.5 引入,线程不安全,因而效率更高。
  7. StringBuilder & StringBuffer 初始容量都为 16,开发者应该指定其容量,以避免多次扩容所带来的性能问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

灼疼热情

暂无简介

文章
评论
27 人气
更多

推荐作者

梦途

文章 0 评论 0

蓝眼睛不忧郁

文章 0 评论 0

134fengkuang

文章 0 评论 0

yang18

文章 0 评论 0

属性

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文