浅谈String、StringBuffer和StringBuil

2019-12-09  本文已影响0人  f155b8f6e0ac

浅谈String、StringBuffer和StringBuild的区别

一、可变与否

总结: String、StringBuilder和StringBuffer的底层数据结构都是char[]数组,不同的是String将该char数组设置成了不可变的(final),通过这个关键字实现了不可变对象。

二、执行效率

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

三、建议使用场景

三、相关知识总结

  1. java支持通过构造方法或者字面常量构建字符串
  2. 字符串对象存放的位置可能放在堆内存,也可能放在字符串常量池。使用构造方法构建的字符串对象一定在堆内存,如果堆该字符串对象调用String.intern()方法,则可以将该字符串移入字符串常量池。
  3. 字符串上支持很多操作API,例如字符串连接、截取字符串、trim、替换字符等等,这些操作看似是写操作,实际上都会返回一个新的字符串
  4. 字符串的连接操作有几种方式:
    • “+”运算符重载,底层是依靠StringBuilder实现的;
    • String.contact()方法,底层是依赖Array.copy实现的;
    • StringBuilder,通过预先分配一个字符缓冲区来进行字符串的连接,适合大批量字符串连接的情况
上一篇下一篇

猜你喜欢

热点阅读