string plus operator 和 stringbuilder append 的优缺点是什么?
what are the pros and cons string plus operator and stringbuilder append?
我硬编码了 SQL 查询,它使用 string + operator 进行字符串连接,我即将用 stringBuilder append 替换 String + operator ,我只需要比较这两种方法的优缺点。
示例代码:
insertStat = CMSCon.prepareStatement("INSERT INTO PROFILE"
+ " (PROFILECODE,DESCR,CTYPE,"
+ " STAT,CR,AMOUNT,PERCENTAGE,COMB,CMETHOD,"
+ " LASTUPDATEDUSER,LASTUPDATEDTIME,CREATEDTIME)"
+ " VALUES (?,?,?,?,?,?,?,?,?,?,SYSDATE,SYSDATE)");
会被这样的东西代替
StringBuilder sb = new StringBuilder();
insertStat = CMSCon.prepareStatement(sb.append("INSERT INTO PROFILE")
.append(" (PROFILECODE,DESCR,CTYPE,")
.append(" STAT,CR,AMOUNT,PERCENTAGE,COMB,CMETHOD,")
.append(" LASTUPDATEDUSER,LASTUPDATEDTIME,CREATEDTIME)")
.append((?,?,?,?,?,?,?,?,?,?,SYSDATE,SYSDATE)").toString());
无论如何,编译器都会在幕后将 String+ 转换为对 StringBuilder 的调用。所以在你的例子中最终没有性能差异,因为最终的字节码应该几乎相同(你可能想使用 javap 自己检查)。
因此,通常情况下,只有当您必须在循环中连接数据(并且性能很重要)时,您才会手动使用 StringBuilder。
否则你倾向于 "better readability" 你的代码,你最经常(不总是)使用 String+ 来实现。
我硬编码了 SQL 查询,它使用 string + operator 进行字符串连接,我即将用 stringBuilder append 替换 String + operator ,我只需要比较这两种方法的优缺点。
示例代码:
insertStat = CMSCon.prepareStatement("INSERT INTO PROFILE" + " (PROFILECODE,DESCR,CTYPE," + " STAT,CR,AMOUNT,PERCENTAGE,COMB,CMETHOD," + " LASTUPDATEDUSER,LASTUPDATEDTIME,CREATEDTIME)" + " VALUES (?,?,?,?,?,?,?,?,?,?,SYSDATE,SYSDATE)");
会被这样的东西代替
StringBuilder sb = new StringBuilder();
insertStat = CMSCon.prepareStatement(sb.append("INSERT INTO PROFILE")
.append(" (PROFILECODE,DESCR,CTYPE,")
.append(" STAT,CR,AMOUNT,PERCENTAGE,COMB,CMETHOD,")
.append(" LASTUPDATEDUSER,LASTUPDATEDTIME,CREATEDTIME)")
.append((?,?,?,?,?,?,?,?,?,?,SYSDATE,SYSDATE)").toString());
无论如何,编译器都会在幕后将 String+ 转换为对 StringBuilder 的调用。所以在你的例子中最终没有性能差异,因为最终的字节码应该几乎相同(你可能想使用 javap 自己检查)。
因此,通常情况下,只有当您必须在循环中连接数据(并且性能很重要)时,您才会手动使用 StringBuilder。
否则你倾向于 "better readability" 你的代码,你最经常(不总是)使用 String+ 来实现。