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+ 来实现。