为什么字符串用+号拼接对象,会得到字符串呢

+号作为java中为数不多的重载运算符,提供了字符串拼接的功能。

javap -c 反编译这个类可以看出来。编译器其实也是为我们手动new Stringbuilder来进行字符串拼接。

那么问题来了。为什么有人告诉我,使用+号拼接字符串会产生一大堆无用的对象呢?他们是在开玩笑吗?编译器不是会为我们进行优化吗?

其实不是这样的。

对于一般的字符串拼接是没有问题的,只会产生一个Stringbuider对象。但是如果你拼接对象的行为在一个循环内,也就是说toString的形式是在一个循环内产生的,

javap-c 可以看到。+号所产生的操作,会在循环内不产生N个Stringbuider对象。这是我们需要优化的地方。

也就是我,当拼接字符串的操作发生在循环体内的话,请使用Stringbuider而不是+号。

posted @ 2019-12-28 15:49  1994的地铁  阅读(645)  评论(0编辑  收藏  举报