StringBuilder vs String concatenation in toString() in Java

后端 未结 18 2213
北恋
北恋 2020-11-21 04:18

Given the 2 toString() implementations below, which one is preferred:

public String toString(){
    return \"{a:\"+ a + \", b:\" + b + \", c: \"         


        
18条回答
  •  梦谈多话
    2020-11-21 04:43

    The key is whether you are writing a single concatenation all in one place or accumulating it over time.

    For the example you gave, there's no point in explicitly using StringBuilder. (Look at the compiled code for your first case.)

    But if you are building a string e.g. inside a loop, use StringBuilder.

    To clarify, assuming that hugeArray contains thousands of strings, code like this:

    ...
    String result = "";
    for (String s : hugeArray) {
        result = result + s;
    }
    

    is very time- and memory-wasteful compared with:

    ...
    StringBuilder sb = new StringBuilder();
    for (String s : hugeArray) {
        sb.append(s);
    }
    String result = sb.toString();
    

提交回复
热议问题