作者 : 卿笃军
一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符至String对象中。您也许会使用+来串联字符串以达到附加新字符或字符串 的目的,但+会产生一个新的String实例。如果程序对这种附加字符串的需求很频繁,并不建议使用+来进行字符串的串联。在面向对象程序设计中,最好是 能重复运用已生成的对象,对象的生成需要内存空间与时间,不断地产生String实例是一个没有效率的行为。J2SE 5.0提供java.lang.StringBuilder类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的 字符超出可容纳的长度,则StringBuilder对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用 StringBuilder会让程序的效率大大提高。通过下面的简单测试程序就可以知道效能差距有多大。
示例:String 与 StringBuilder 效率体现
package append; public class Append { public static void main(String[] args) { // TODO Auto-generated method stub String str = ""; long sTime = System.currentTimeMillis(); for (int i = 0; i < 10000; ++i) str += i; long eTime = System.currentTimeMillis(); System.out.println("消耗时间1:"+(eTime-sTime)); StringBuilder builder = new StringBuilder(""); //创建字符串生成器 sTime = System.currentTimeMillis(); for (int i = 0; i < 10000; ++i) builder.append(i); eTime = System.currentTimeMillis(); System.out.println("消耗时间2:"+(eTime-sTime)); } }运行结果:
消耗时间1:762
消耗时间2:3