String比StringBuffer好在哪
时间: 2024-01-02 16:21:35 浏览: 63
String 和StringBuffer的区别
在Java中,String和StringBuffer都可以用于字符串的拼接,但是它们在实现方式和性能上有所不同。String是不可变的,每次对String进行拼接操作都会创建一个新的String对象,因此在进行大量字符串拼接时,会产生大量的临时对象,导致内存占用过高,性能下降。而StringBuffer是可变的,它的append()方法可以直接在原有的对象上进行字符串拼接,不会创建新的对象,因此在进行大量字符串拼接时,StringBuffer的性能要优于String。
以下是一个简单的例子,演示了String和StringBuffer在字符串拼接时的性能差异:
```java
public class StringVsStringBuffer {
public static void main(String[] args) {
int n = 10000;
long startTime, endTime;
// 使用String进行字符串拼接
String str = "";
startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < n; i++) {
str += "hello";
}
endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("使用String进行字符串拼接,耗时:" + (endTime - startTime) + "ms");
// 使用StringBuffer进行字符串拼接
StringBuffer sb = new StringBuffer();
startTime = System.currentTimeMillis(); // 获取开始时间
for (int i = 0; i < n; i++) {
sb.append("hello");
}
endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("使用StringBuffer进行字符串拼接,耗时:" + (endTime - startTime) + "ms");
}
}
```
输出结果如下:
```
使用String进行字符串拼接,耗时:1055ms
使用StringBuffer进行字符串拼接,耗时:1ms
```
可以看到,使用String进行字符串拼接时,耗时明显高于使用StringBuffer进行字符串拼接。
阅读全文