StringBuilder是Java平台上非线程安全的可变字符序列类。与StringBuffer相比,StringBuilder的方法没有使用synchronized关键字,因此它在单线程环境下的性能更好。由于没有线程同步的开销,StringBuilder通常比StringBuffer执行速度更快。2. 线程安全性 2.1 StringBuffer StringBuffer是线程安全的,这意味着它的方法都是同步的。
为了能提高拼接字符串的效率,Java给我们提供了StringBuffer和StringBuilder,它们都是可变对象,可以预分配缓冲区。当我们往StringBuffer或StringBuilder中新增字符时,不会创建新的临时对象,可以极大地节省了内存。可以说,好处多多。那么接下来我们就一起学习 StringBuffer、StringBuilder 的用法吧。二. StringBuffer 1. ...
(1)基本原则:如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。 (2)不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类,这在Java的优化上是一条比较重要的原则。例如: Stringresult="";for(Strings:hugeArray...
AbstractStringBuilder类中的byte[] value只是定义了一个字节数组,数组属于引用类型,默认指向为空(即null),但是当我们通过构造器 "StringBuffer(String str)" 来初始化一个非空的StringBuffer类对象时,很明显在底层有一个”new“的操作(即上图中)。在java面向对象专题我们说过,new出来的对象都在堆内存中。 不止于此...
StringBuffer和StringBuilder中StringBuffer是线程安全的。但单线程中最好使用StringBuilder。StringBuilder虽不是线程安全的,但性能是比StringBuffer更高的。 2、使用场景 如果字符串值不会改变,推荐使用String,如果需要在多线程环境下安全地修改字符串,使用StringBuffer,如果在单线程环境下需要频繁修改字符串,使用StringBuilder...
由于StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。 实例 publicclassRunoobTest{publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder(10);sb.append("Runoob..");System.out.println(sb);sb.append("!");System.out.println(sb);sb.insert(8,"Java");...
那么接下来就带领各位来学习StringBuffer、StringBuilder的用法吧。 二. StringBuffer 1. 简介 StringBuffer是一种可变的字符串类,即在创建StringBuffer对象后,我们还可以随意修改字符串的内容。每个StringBuffer的类对象都能够存储指定容量的字符串,如果字符串的长度超过了StringBuffer对象的容量空间,则该对象的容量会自动...
String 是不可变的。 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,不过没有使用 final 和 private 关键字修饰,最关键的是这个 AbstractStringBuilder 类还提供了很多修改字符串的方法。比如 append 方法。从如下代码中可以看到,append方法并不是...
StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。通过源码可以看到,StringBuilder和StringBuffer 都继承了 AbstractStringBuiler类 ...