Java中StringBuffer和StringBuilder_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中StringBuffer和StringBuilder

Java中StringBuffer和StringBuilder

 2018/10/9 9:15:11  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.Java中StringBuffer和StringBuilderString是一个不可变的对象,每次修改String对象实际上是创建新对象,并将引用指向新对象。效率很低。StringBuffer是可变的,即每次修改只是针对其本身,大部分情况下比String效率高,StringBuffer保证同步(synchronized),所以线程安全。StringBuffer使用时最好指定容量,这样会比不指定容量快30%-40%,甚至比不指定容量的StringBuilder还快
  • 标签:Java
1. Java中StringBuffer和StringBuilder
class="java" name="code">
String是一个不可变的对象,每次修改String对象实际上是创建新对象,并将引用指向新对象。效率很低。

StringBuffer是可变的,即每次修改只是针对其本身,大部分情况下比String效率高,StringBuffer保证同步(synchronized),所以线程安全。
StringBuffer使用时最好指定容量,这样会比不指定容量快30%-40%,甚至比不指定容量的StringBuilder还快。

StringBuilder没有实现同步,所以非线程安全。但效率应该比StringBuffer高。

1. String最慢的原因
    String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
    而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。

2. 线程安全
    StringBuilder是线程不安全的,而StringBuffer是线程安全的。
    StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的。
	StringBuilder的方法则没有synchronized关键字,所以不能保证线程安全,有可能会出现一些错误的操作。

3. 使用情况
    String:适用于少量的字符串操作的情况
    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

StringBuffer常用方法
    1) public StringBuffer append(String s) 将指定的字符串追加到此字符序列
    2) public StringBuffer reverse() 将此字符序列用其反转形式取代
    3) public delete(int start, int end) 移除此序列的子字符串中的字符
    4) public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中
    5) replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符
上一篇: centos 下yum安装jdk 下一篇: 没有下一篇了!
发表评论
用户名: 匿名