Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别
两个比较好的回答:
NO1
- CharSequence 接口:是一个字符序列.String StringBuilder 和 StringBuffer 都实现了它。
- String 类:是常量,不可变。
- StringBuilder 类:只可以在单线程的情况下进行修改(线程不安全).
- StringBuffer 类:可以在多线程的情况下进行改变(线程安全).
- Stringbuilder 比 StringBuffer 效率高,应该尽量使用 StringBuilder.
NO2
- CharSequence 是一个 java 接口,代表一个 char 序列,String、StringBuilder、StringBuffer 都实现了该接口,CharSequence 实例通过调用 toString 方法可转化为 String 对象。
- String 类是 final 的,不可派生子类,其内部封装的是 char[],另外,android 下的 String 类和 jdk 中的 String 类是有区别的,android 下的 String 类中部分 API 通过 native 方法实现,效率相对高一些。
- String 使用'+'进行字符串拼接时,在编译期会转化为 StringBuilder#append 方式
- String 在内存中有一个常量池,两个相同的串在池中只有一份实例(String s = "abc"方式或者 String#intern 方式会在池中分配),使用 new String 方式会在 heap 中分配,每次创建都是一个全新的实例。
- StrigBuilder & StringBuffer 都是可扩展的串,提供了一系列 apped 方法用于拼接不同类型对象
- StringBuffer 于 jdk1.0 引入,线程安全(多线程场景下使用),StringBuilder 于 jdk1.5 引入,线程不安全,因而效率更高。
- StringBuilder & StringBuffer 初始容量都为 16,开发者应该指定其容量,以避免多次扩容所带来的性能问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: DiscreteSeekBar 源码解析
下一篇: Java 基础之继承与接口的区别
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论