分别使用String的 += 和StringBuilder的append方法对字符串做100000次拼接,计算String拼接100000次花费时间与StringBuilder拼接100000次所花费时间并打印。
时间: 2024-09-13 21:04:55 浏览: 29
JavaScript 利用StringBuffer类提升+=拼接字符串效率
在Java中,字符串(String)的拼接使用的是`+=`操作符时,实际上是每次拼接都创建了一个新的String对象。由于String是不可变的,每次拼接实际上都会产生一个新的String对象,而老的String对象就会成为垃圾回收的目标,这会导致大量的内存分配和垃圾回收,从而影响性能。
而StringBuilder是专为字符串拼接设计的可变字符序列。它提供了`append`方法来进行字符串拼接,不会创建新的对象,而是在原有的字符序列上进行扩展。因此,使用StringBuilder进行大量字符串拼接时,通常性能会比使用String的`+=`操作符要好很多。
为了比较String和StringBuilder在拼接100000次时的性能差异,我们可以使用System类的nanoTime方法来测量执行时间。以下是一个简单的示例代码:
```java
public class StringVsStringBuilder {
public static void main(String[] args) {
// 使用String += 进行拼接
String str = "";
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
str += "x"; // 拼接操作
}
long endTime = System.nanoTime();
System.out.println("String拼接100000次耗时:" + (endTime - startTime) + "纳秒");
// 使用StringBuilder的append方法进行拼接
StringBuilder stringBuilder = new StringBuilder();
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
stringBuilder.append("x"); // append操作
}
endTime = System.nanoTime();
System.out.println("StringBuilder拼接100000次耗时:" + (endTime - startTime) + "纳秒");
}
}
```
运行这段代码,你将得到两个耗时结果,通常情况下StringBuilder的耗时会远远小于String += 的耗时。
阅读全文