Java中String类有一个非常重要的特性:不可变(immutable)。简单来说,就是一旦创建了一个字符串对象,就无法更改它的内容。因为每次字符串内容的更改都会创建一个新的字符串对象,这样就会导致频繁的对象创建和垃圾回收,对应用的性能造成很大的影响。
一、StringBuilder类的介绍
StringBuilder类是Java提供的用于字符串操作的工具类。与String不同的是,StringBuilder类的实例内容可以改变,而且其操作是非常高效的。可以将StringBuilder看作是一个可变的字符序列,可以通过它进行字符串的追加、插入、删除等操作,如果一次性需要进行多次字符串拼接,建议使用StringBuilder。
二、StringBuilder与String的性能比较
下面通过一组程序来比较使用String和StringBuilder进行字符串拼接的性能差异:
public class StringTest {
public static void main(String[] args) {
long start = System.currentTimeMillis();
String s1 = "";
for (int i = 0; i < 10000; i++) {
s1 = s1 + i;
}
long end = System.currentTimeMillis();
System.out.println("Using String cost " + (end - start) + "ms");
start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
end = System.currentTimeMillis();
System.out.println("Using StringBuilder cost " + (end - start) + "ms");
}
}
运行结果如下:
Using String cost 1316ms Using StringBuilder cost 1ms
可以看到,使用String进行字符串拼接需要1316ms,而使用StringBuilder仅需要1ms。显然,使用StringBuilder的性能要优于String,尤其是在需要多次字符串拼接的情况下。
三、StringBuilder的常用方法
StringBuilder的常用方法如下:
- append(String str): 将指定的字符串追加到此字符序列。
- insert(int offset, String str): 将指定的字符串插入此字符序列中。
- delete(int start, int end): 移除此序列的子字符串中的字符。
- deleteCharAt(int index): 移除此序列指定位置上的字符。
- replace(int start, int end, String str): 使用指定的字符串替换此序列的子字符串中的字符。
- reverse(): 将此字符序列用其反转形式取代。
下面通过实例来演示这些方法的使用:
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("hello");
System.out.println(sb.toString()); //hello
sb.append(" world");
System.out.println(sb.toString());//hello world
sb.insert(5, ",");
System.out.println(sb.toString()); //hello, world
sb.delete(5, 6);
System.out.println(sb.toString()); //hello world
sb.deleteCharAt(5);
System.out.println(sb.toString()); //helloworld
sb.replace(5, 8, "java");
System.out.println(sb.toString()); //hellojava
sb.reverse();
System.out.println(sb.toString()); //avajolleh
}
}
运行结果如下:
hello hello world hello, world hello world helloworld hellojava avajolleh
四、总结
本文介绍了Java中StringBuilder类的使用方法,以及与String进行字符串拼接的性能比较。在实际开发中,如果需要多次进行字符串拼接操作,建议使用StringBuilder类,其性能远远高于String对象拼接。
原创文章,作者:FBJGP,如若转载,请注明出处:https://www.506064.com/n/330216.html
微信扫一扫
支付宝扫一扫