【发布时间】:2014-08-25 15:01:09
【问题描述】:
据我了解,当我执行 String baz = "foo" + "bar" + "123" 时,Java 编译器会在内部将表达式替换为 StringBuilder。然而,我们的 Java 老师告诉我们,始终明确使用 StringBuilder 是一种好习惯...
我是否正确地假设我将仅在连接内部循环时需要显式使用 StringBuilder,如 an answer to Stack Overflow question String builder vs string concatenation 中所示?在其他情况下,您应该明确使用StringBuilder 而不是+ 或+=?
【问题讨论】:
-
to always use a StringBuilder explicitly- 这不是一个好习惯。您将牺牲代码可读性以获得 0.0000000000001% 的性能提升。当您要在循环中追加数千个字符串时,请使用 StringBuilder。 -
我不知道你的java老师为什么这么热衷于使用StringBuilder。 StringBuilder 很酷,除了 java 之外,其他都在内部处理它。
-
你的老师错了。你是对的。
-
你错了,
String baz = "foo" + "bar" + "123"在编译时会被替换为String baz = "foobar123"。编译时常量字符串连接是在在编译时完成的。此外,编译器可以用StringBuilder替换非常量字符串连接,但没有义务这样做。
标签: java string concatenation stringbuilder