如何解决为什么 String.valueOf 比 String Concatenation 更快地将整数转换为字符串?
这是问题 "Why is String concatenation faster than String.valueOf for converting an Integer to a String?" 的反面。它不是重复。相反,它源于 this answer 与基准断言 t.setText(String.valueOf(number))
比 t.setText(""+number)
快,以及 ChristianB 关于为什么的问题。
解决方法
字符串相加导致编译器创建一个 StringBuilder
实例,然后对每个添加的元素进行 append 调用,然后调用 StringBuilder.toString()
以创建结果连接的 String
实例。
因此,""+number
创建一个 StringBuilder
,使用与 String.valueOf
相同的转换附加一个数字,然后从 String
创建一个 StringBuilder
实例, StringBuilder.toString
。
String.valueOf(number)
避免使用 StringBuilder,仅使用来自 String.valueOf
的值。
当编译器可以避免所有这些时,如果它能够识别最终的 String 结果,那么答案可能会有所不同,因为附加的元素都是常量。在这种情况下,编译器只是将最终的 String 放入编译后的代码中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。