为什么字符串用+号拼接对象,会得到字符串呢
+号作为java中为数不多的重载运算符,提供了字符串拼接的功能。
javap -c 反编译这个类可以看出来。编译器其实也是为我们手动new Stringbuilder来进行字符串拼接。
那么问题来了。为什么有人告诉我,使用+号拼接字符串会产生一大堆无用的对象呢?他们是在开玩笑吗?编译器不是会为我们进行优化吗?
其实不是这样的。
对于一般的字符串拼接是没有问题的,只会产生一个Stringbuider对象。但是如果你拼接对象的行为在一个循环内,也就是说toString的形式是在一个循环内产生的,
javap-c 可以看到。+号所产生的操作,会在循环内不产生N个Stringbuider对象。这是我们需要优化的地方。
也就是我,当拼接字符串的操作发生在循环体内的话,请使用Stringbuider而不是+号。