java - 连接常量字符串 VS StringBuffer

标签 java string concatenation stringbuffer

对于使用一种或另一种更好、更快、更正确的变体,您可以给出哪些论据。

第一个变体:

StringBuffer sql = new StringBuffer("SELECT DISTINCT f.ID ")
    .append("FROM FIRST_TABLE F ")
        .append("LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID ")
    .append("WHERE ")
        .append("F.BOOL = 1 ")
        .append("AND S.DATE IS NOT NULL ")
        .append("AND S.CLOSED = 0 ");

第二种变体:

String sql = "SELECT DISTINCT f.ID " +
             "FROM FIRST_TABLE F " +
                "LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID " +
             "WHERE "
                "F.BOOL = 1 " +
                "AND S.DATE IS NOT NULL " +
                "AND S.CLOSED = 0";

*注:Class StringClass StringBuffer .

最佳答案

第二种更好:

  • 更清晰(更多的代码与您想要的有关)
  • 效率更高,因为所有的连接都是在编译时完成的

即使需要执行时连接(例如,您在那里有一个变量),编译后的代码也会使用StringBuilderStringBuffer 需要的地方(取决于您的目标 Java 版本)。

请注意,如果您正在执行数据库查询,效率将微不足道。

关于java - 连接常量字符串 VS StringBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530294/

相关文章:

java - Jackson 从值构建 JSON,术语?

java - 如何使用坐标在 map android上查找位置

java - 碰撞处理程序未按 libgdx java 指定的方式工作

c# - 如何分析字符串

c++ - 我的程序在不同的机器上给出不同的输出..!

c++ - 连接两个字符串文字

c# - for循环的逻辑错误在哪里

java - Spring MVC 自定义格式化程序未触发

python - 在 Python 中,如何在一行代码中创建一个包含 n 个字符的字符串?

c - C中扫描和打印字符串的段错误