✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】

一个可变的字符序列。
此类提供一个与 StringBuffer兼容的API,但不保证同步(StringBuilder 不是线程安全)。
该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
如果可能,建议优先采用该类因为在大多数实现中,它比 StringBuffer要快。
在StringBuilder 上的主要操作是append 和 insert方法,可重载这些方法,以接受任意类型的数据。
【举个栗子】
package com.dingjiaxiong.stringbuilder_;
/**
* ClassName: StringBuilder01
* date: 2022/9/4 16:52
*
* @author DingJiaxiong
*/
public class StringBuilder01 {
public static void main(String[] args) {
//韩老师解读
//老韩解读
//1. StringBuilder 继承 AbstractStringBuilder 类
//2. 实现了 Serializable ,说明StringBuilder对象是可以串行化(对象可以网络传输,可以保存到文件)
//3. StringBuilder 是final类, 不能被继承
//4. StringBuilder 对象字符序列仍然是存放在其父类 AbstractStringBuilder的 char[] value;
// 因此,字符序列是堆中
//5. StringBuilder 的方法,没有做互斥的处理,即没有synchronized 关键字,因此在单线程的情况下使用
// StringBuilder
StringBuilder stringBuilder = new StringBuilder();
}
}
StringBuilder 和StringBuffer均代表可变的字符序列,方法是一样的,所以使用和StringBuffer一样
略。
可参考官方文档。

结论:StringBuilder > StringBuffer > String
【举个栗子】
package com.dingjiaxiong.stringbuilder_;
/**
* ClassName: StringVsStringBufferVsStringBuilder
* date: 2022/9/4 16:57
*
* @author DingJiaxiong
*/
public class StringVsStringBufferVsStringBuilder {
public static void main(String[] args) {
long startTime = 0L;
long endTime = 0L;
StringBuffer buffer = new StringBuffer("");
startTime = System.currentTimeMillis();
for (int i = 0; i < 80000; i++) {
buffer.append(String.valueOf(i)); //StringBuffer拼接80000次
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer的执行时间为:" + (endTime - startTime));
StringBuilder builder = new StringBuilder("");
startTime = System.currentTimeMillis();
for (int i = 0; i < 80000; i++) {
builder.append(String.valueOf(i)); //StringBuilder拼接80000次
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder的执行时间为:" + (endTime - startTime));
String text = "";
startTime = System.currentTimeMillis();
for (int i = 0; i < 80000; i++) {
text = text + i; //StringBuilder拼接80000次
}
endTime = System.currentTimeMillis();
System.out.println("String的执行时间为:" + (endTime - startTime));
}
}
运行结果
