首页 > 代码库 > StringBuffer的拼接效率小细节
StringBuffer的拼接效率小细节
最近看项目代码发现经常StringBuffer拼接SQL里面有这样的代码sql.append("select * from XXX where xxx="+xxx+" and yyy="+yyy);
于是我很好奇这样写是按顺序连续append还是先创建一个StringBuffer对象append全部String,然后再传送到sql对象中去
实践检验代码如下
public static void main(String[] args){ t(9); } private static void t( int q){ StringBuffer sb=new StringBuffer(); long start=System.currentTimeMillis(); for(int i=0;i<200000;i++){ sb.append("11111111111111"+q+"11111111111111"+q+"111111111111111"+q); } long end=System.currentTimeMillis(); long start2=System.currentTimeMillis(); for(int i=0;i<200000;i++){ sb.append("11111111111111"); sb.append(q); sb.append("11111111111111"); sb.append(q); sb.append("11111111111111"); sb.append(q); } long end2=System.currentTimeMillis(); long start3=System.currentTimeMillis(); for(int i=0;i<200000;i++){ sb.append("11111111111111"+q); sb.append("11111111111111"+q); sb.append("11111111111111"+q); } long end3=System.currentTimeMillis(); System.out.println(start-end); System.out.println(start2-end2); System.out.println(start3-end3); } //console输出如下: //-140 //-31 //-125
备注:
因为预编译会把所有已知的String拼接成一起,所以拼接中必须要是未知数。
String的每一次拼接参数会创建一个StringBuffer对象,单条String拼接次数越多耗费StringBuffer创建资源也就越多。
结论:
StringBuffer的拼接过程中应该尽量保证已知String与未知变量分离sppend,可节约资源。
StringBuffer的拼接效率小细节
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。