无法确定最有效的字符串连接

Bis*_*was 1 java tostring

我使用toString()方法.但我不知道哪种实现更好用,为什么:

public String toString() {
    StringBuffer buffer = new StringBuffer();
    buffer.append("Description: " + description + ";");
    buffer.append("Price: " + price);
    return buffer.toString();
}


public String toString() {
    return "Description: " + description + ";" + "Price: " + price;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

就个人而言,我会使用后者 - 它更清晰,实际上有效:

  • 对于Java的现代版本,它将使用非同步StringBuilder类型而不是StringBuffer
  • 这不会构成中间字符串"Price: " + price"Description: " + description + ";"哪些是不必要的,

在Java 5+下,我希望后面的代码被编译为:

public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("Description: ");
    builder.append(description);
    builder.append(";");
    builder.append("Price");
    builder.append(price);
    return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)

重要的一点是第二种形式的清晰度 - 然而 - 我当然觉得它比第一种形式更简单.一个有趣的观点是,在编译版本中有两个连续的调用追加字符串常量(我已经检查过).这将是稍微更高效-甚至更具可读性,海事组织-写:

public String toString() {
    return "Description: " + description + ";Price: " + price;
}
Run Code Online (Sandbox Code Playgroud)