StringBuffer s = new StringBuffer(45); s.append("Testing String"); s.append(" "); s.append("Concatenation Performance"); String s3 = s.toString();
再考虑下面这个例子:
String s = ""; int sum = 0; for(int I=1; I<10; I++) { sum += I; s = s + "+" +I ; } s = s + "=" + sum;
分析一下为何前面的代码比下面的代码效率低:
StringBuffer sb = new StringBuffer(); int sum = 0; for(int I=1; I<10; I++){ sum + = I; sb.append(I).append("+"); } String s = sb.append("=").append(sum).toString();
原因就在于每个s = s + "+" + I操作都要创建并拆除一个StringBuffer对象以及一个String对象。这完全是一种浪费,而在第二个例子中我们避免了这种情况。