File tree 1 file changed +1
-1
lines changed
1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -683,7 +683,7 @@ System.out.println(s);
683
683
684
684
如果你使用 IDEA 的话,IDEA 自带的代码检查机制也会提示你修改代码。
685
685
686
- 不过,使用 “ + ” 进行字符串拼接会产生大量的临时对象的问题在 JDK9 中得到了解决。在 JDK9 当中 ,字符串相加 “+ ” 改为了用动态方法 `makeConcatWithConstants()` 来实现,而不是大量的 ` StringBuilder ` 了。 这个改进是 JDK9 的 [JEP 280 ](https: // openjdk.org/jeps/280) 提出的,这也意味着 JDK 9 之后,你可以放心使用“+” 进行字符串拼接了。 关于这部分改进的详细介绍,推荐阅读这篇文章:还在无脑用 [StringBuilder?来重温一下字符串拼接吧](https://juejin.cn/post/7182872058743750715) 。
686
+ 在 JDK 9 中 ,字符串相加“+ ”改为用动态方法 `makeConcatWithConstants()` 来实现,通过提前分配空间从而减少了部分临时对象的创建。然而这种优化主要针对简单的字符串拼接,如: `a + b + c` 。对于循环中的大量拼接操作,仍然会逐个动态分配内存(类似于两个两个 append 的概念),并不如手动使用 StringBuilder 来进行拼接效率高。 这个改进是 JDK9 的 [JEP 280 ](https: // openjdk.org/jeps/280) 提出的,关于这部分改进的详细介绍,推荐阅读这篇文章:还在无脑用 [StringBuilder?来重温一下字符串拼接吧](https://juejin.cn/post/7182872058743750715) 以及参考 [issue#2442](https://github.com/Snailclimb/JavaGuide/issues/2442) 。
687
687
688
688
### String #equals() 和 Object #equals() 有何区别?
689
689
You can’t perform that action at this time.
0 commit comments