为什么 String.valueOf 比将整数转换为字符串的字符串连接更快?

Why is String.valueOf faster than String Concatenation for converting an Integer to a String?

这是问题 . It is not a duplicate. Rather, it stems from this answer 的反面,基准断言 t.setText(String.valueOf(number))t.setText(""+number) 快,而 ChristianB 的问题是 为什么

字符串添加导致编译器创建一个 StringBuilder 实例,然后对每个添加的元素进行追加调用,然后调用 StringBuilder.toString() 以创建结果串联的 String 实例.

因此,""+number 创建一个 StringBuilder,使用与 String.valueOf 相同的转换附加一个数字,然后从 StringBuilder 创建一个 String 实例] 与 StringBuilder.toString.

String.valueOf(number) 避免使用 StringBuilder,仅使用 String.valueOf.

中的值

当编译器可以避免所有这些情况时,如果它可以识别最终的 String 结果,因为附加的元素都是常量,那么答案可能会有所不同。在那种情况下,编译器只是将最终的字符串放入编译后的代码中。