String,StringBuffer,StringBuilder区别

1、类型区别

String 是字符串常量

StringBuffer是字符串变量

StringBuilder是字符串变量

2、运行速度

String < StringBuffer < StringBuilder

原因:String是字符串常量,并且String类型不是基本类型,实际可以看做是一个对象,在拼接的时候在会不停的创建对象。所以String的运行效率相对于另外的两个低。

String a = "123"
String b = "123"
//a 和 b 只是值相同,地址不同

String的equals()被重写

3、线程安全

      StringBuilder:线程非安全的   StringBuffer:线程安全的

    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。

   原因:

      StringBuilder中的append方法没有使用synchronized关键字,StringBuffer的append方法使用了synchronized关键字。

 

 

 4. 对于三者使用的总结

  1. 单线程操作字符串缓冲区 下操作大量数据用StringBuilder
  2. 多线程操作字符串缓冲区 下操作大量数据用StringBuffer
  3. 如果要操作少量的数据用String

 

posted @ 2018-05-23 14:17  品书读茶  阅读(127)  评论(0编辑  收藏  举报