StringBuilder(或 StringBuffer)

 

一、运行速度比较:java

  • StringBuilder > StringBuffer(线程安全) > String

二、String类是不可变类(final修饰),封装的不可变数组数组

  • 全部字符都是存储在这个final 类型的char数组中
  • 字符串操做,返回的结果是从新new出来的对象

三、 StringBuffer类封装的是可变数组,而且线程安全安全

四、StringBuilder类是非线程安全、可变字符串封装类app

五、抽象类AbstractStringBuilderui

  • StringBuffer和StringBuilder都继承自这个抽象类
  • StringBuilder和StringBuffer的方法实现基本上一致
  • 不一样的是StringBuffer类的方法前多了个synchronized关键字

六、StringBuilder和StringBuffer线程

  • append,insert,delete方法最根本上都是调用System.arraycopy()
  • substring(int, int)方法是经过从新new String()::StringBuilder和String没区别
  • 两者大部分方法均调用父类AbstractStringBuilder的实现
  • 扩容机制首先是把容量变为原来容量的2倍加2
  • StringBuilder和StringBuffer的默认容量都是16,预先估计好字符串的大小避免扩容时间消耗

七、System.arraycopy()code

​
/**
*src:源数组; 
*srcPos:源数组要复制的起始位置; 
*dest:目的数组; 
*destPos:目的数组放置的起始位置; 
*length:复制的长度。 
*注意:src and dest都必须是同类型或者能够进行转换类型的数组.
*/
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

​
相关文章
相关标签/搜索