我有使用String +运算符进行字符串连接的硬编码SQL查询,我将用StringBuilder append替换String +运算符,我只需要比较两种方法的优缺点。
示例代码:
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());
答案 0 :(得分:0)
无论如何,编译器都会将String +转换为对StringBuilder的调用。因此,在您的示例中,最后没有性能差异,因为最终的字节码应该几乎相同(您可能希望使用javap来检查自己)。
因此,通常,例如,当您必须在循环中连接数据时(与性能有关),通常仅手动使用StringBuilder。
否则,您倾向于使用代码的“更好的可读性”,这是您最经常(并非总是)使用String +实现的。