直接上代码吧:
package mm_test; /** * @Function: TODO ADD FUNCTION. <br/> * @Date: 2016年4月14日 下午8:25:43 * * @author zhangmengmeng01@baidu.com */ public class TerminationCondition { public static void main(String[] args) { long start1 = System.currentTimeMillis(); String res1 = ""; for (int i = 1; i < 100000; i++) { res1 += i; } System.out.println(System.currentTimeMillis()-start1); long start2 = System.currentTimeMillis(); StringBuilder res2 = new StringBuilder(); for(int i=1;i<100000;i++){ res2.append(i); } System.out.println(System.currentTimeMillis()-start2); } }
输出结果如下:
19143
47
两种构造字符串的方式,时间开销差的是好几个数量级。究其原因呢,第一种构造字符串的方式使用了重载操作符『+』,会不断的 new一个String Builder 对象,时间开销自然很大。
第二种构造字符串的方法,只生成了一个 StringBuilder对象,相当于原数组修改,时间开销自然少。
因此,当你为一个类编写 toString 方法时,如果字符串操作比较简单,可以考虑用+。
如果再 toString 方法中使用循环,那么最好自己创建一个 StringBuilder 对象,用它来构造最终的结果。