思否学否

java中String、StringBuffer和StringBuilder的区别

java中用于处理字符串常用的有三个类:

  java.lang.String

  java.lang.StringBuffer

  java.lang.StrungBuilder

共同之处:

  1、三个都是final类,不允许被继承.

  2、StringBuffer与StringBuilder两者共同点是可以通过append、insert进行字符串的操作。

 

区别:

  1、运行速度快慢为:StringBuilder > StringBuffer > String,String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

  2、StringBuffer是线程安全,StringBuilder是线程不安全的。StringBuffer可以不需要额外的同步用于多线程中;StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;

       3、StringBuffer长度和内容可变,String不可变

 

String实现了三个接口:Serializable、Comparable<String>、CarSequence

StringBuilder只实现了两个接口Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,其他两个不可以。

赋值操作:

 StringBuffer sb=new StringBuffer("abcdefjhe");   ok

 StringBuffer sb="abcdefjhe";  //not ok

 

总结一下 

   String:适用于少量的字符串操作的情况

   StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

   StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

posted on 2019-11-28 10:06  思否学否  阅读(200)  评论(0)    收藏  举报