它生成等效的:
String s = new StringBuilder("abc")
.append(methodReturningAString())
.append("ghi")
.append(anotherMethodReturningAString())
.append("omn")
.append("blablabla")
.toString();
它足够智能,可以预先连接静态字符串(即“omn”+“blablabla”)。
如果你愿意,你可以称之为“性能技巧”的使用。对于性能来说,这绝对比执行五个串联导致四个不必要的临时字符串更好。此外,使用StringBuilder是Java 5的性能改进。在此之前,使用了StringBuffer。StringBuilder
编辑:如注释中指出的那样,静态字符串只有在连接开始时才会预先连接。否则会破坏操作顺序(尽管在这种情况下,我认为Sun可以证明这一点)。所以给定这个:
String s = "abc" + "def" + foo() + "uvw" + "xyz";
它将被编译如下:
String s = new StringBuilder("abcdef")
.append(foo())
.append("uvw")
.append("xyz")
.toString();