使用+来连接字符串总是一个坏主意

fas*_*ava 14 java string coding-style internationalization

我的代码如下:

String s = "";
for (My my : myList) {
    s += my.getX();
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Findbugs总是会报错.

Ant*_*ney 23

+如果你手动连接,我会使用,

String word = "Hello";
word += " World!";
Run Code Online (Sandbox Code Playgroud)

但是,如果你正在迭代和连接我会建议StringBuilder,

StringBuilder sb = new StringBuilder();
for (My my : myList) {
    sb.append(my.getX());
}
Run Code Online (Sandbox Code Playgroud)

  • +1 - 它是循环*中的串联*,您通常应该避免. (8认同)

Joh*_* B. 9

String对象在Java中是不可变的.每个+表示另一个对象.您可以使用StringBuffer来最小化创建的对象的数量.

  • Java使用+转换串联以使用`StringBuilder`.如果您使用一系列方法调用或其他方法调用循环或构建字符串,则只需要自己使用`StringBuilder`.此外,`StringBuffer`具有您通常不需要的线程安全开销,因此`StringBuilder`通常是更好的选择. (7认同)
  • _Tony赶紧去看看StringBuilder_ (5认同)