简单的一行代码:
String thing = "Something";
thing += " something else" + " and more.";
IntelliJ IDEA 提供将此行更改为 4 种其他方式来实现相同的结果:
String.format()
StringBuilder.append()
java.text.MessageFormat.format()
Replace += with =
为什么?+= 有什么问题?任何人都可以解释一下吗?谢谢。
简单的一行代码:
String thing = "Something";
thing += " something else" + " and more.";
IntelliJ IDEA 提供将此行更改为 4 种其他方式来实现相同的结果:
String.format()
StringBuilder.append()
java.text.MessageFormat.format()
Replace += with =
为什么?+= 有什么问题?任何人都可以解释一下吗?谢谢。
在一般情况下,结果是不一样的。+
运算符分配中间字符串,这需要额外的内存。
String thing = "Something";
thing += " something else" + " and more."; // two allocations: to compute string inside expression ```" something else" + " and more."```` and to execute ```+=```
通过使用StringBuilder
,您不会分配中间结果,例如需要更少的内存。
在您使用短线且没有循环的情况下,预计不会有实际的性能提升。但是,使用循环,您会收到O(N^2)
复杂性。请用解释的例子检查这个答案。