字符串累加 - 性能优化

1. 测试代码:

package boke.string;

/**
* 字符串累加与性能优化
*
* @since jdk1.6
* @author 毛正吉
* @version 1.0
* @date 2010.05.25
*
*/
public class AppendString {

/**
* @param args
*/
public static void main(String[] args) {
final int N = 100000;

long a1 = System.currentTimeMillis();
String s1 = "";
for (int i = 1; i <= N; i++) {
s1 += "#";
}
long a2 = System.currentTimeMillis();
System.out.println("用操作符串联两个字符串: " + (a2 - a1) + "ms");

StringBuffer sbf = new StringBuffer();
a1 = System.currentTimeMillis();
for (int i = 1; i <= N; i++) {
sbf.append("#");
}
a2 = System.currentTimeMillis();
System.out.println("用StringBuffer串联两个字符串: " + (a2 - a1) + "ms");

StringBuilder sbl = new StringBuilder();
a1 = System.currentTimeMillis();
for (int i = 1; i <= N; i++) {
sbl.append("#");
}
a2 = System.currentTimeMillis();
System.out.println("用StringBuilder串联两个字符串: " + (a2 - a1) + "ms");
}

}

2. 结果输出:

用操作符串联两个字符串: 22625ms
用StringBuffer串联两个字符串: 0ms
用StringBuilder串联两个字符串: 32ms

3. 说明:

(1) String str = "first string";
str = str + "second string";

上面的字符串"first string"创建后是无法改变的,而它的引用却可以改变。
这个字符串的引用是str,它最初指向字符串"first string",在上面的代码中它
被改变成指向str与"second string"串联后的新的字符串。

(2) String str = "first string";
StringBuffer sbf = new StringBuffer(str);
sbf.append("second string");
str = sbf.toString();

上面代码的意思是:将两个字符串串联后并且拷贝到一个临时字符串缓冲区变量中。

因此有一个应用String类的基本规则:最好通过StringBuffer来构建一个字符串对象。这样可以获得更好的系统性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值