我们经常遇到这样的情况,需要传递一个基本类型的字符串表示,往往我们会使用
WrapperClass.toString() ;
and sometimes we usually write
i + "";
如果我们检查任何包装类的toString实现,每次调用它都会创建一个新的String对象。对于原始类型+""也是如此(因为在运行时连接将创建新的String对象)。
那么它们之间有什么区别,还是它们只是将原始类型转换为String对象的替代方法?
就我个人而言,我喜欢使用String.valueOf(i)
:
"" + i
表达您的意图更好 - 该代码表示字符串连接,这完全不是您想要的。良好的意图。
写 i + "";
,可能会让你的代码未来的维护者(很可能是你自己)需要弄清楚输出结果。
WrapperClass.toString();
更加明确,虽然更冗长,但其意图更清晰。此外,弱类型 在 Java 中并不常见,因此建议您坚持编写惯用的 Java 代码。
编译后,生成的字节码很可能是相同或类似的。在 jitting 和运行时期间,您可以预期差异将被有效地抵消。
因此,最终,这是一个风格问题,尽管我建议您使用更冗长的版本。
从功能上来说,它们是相同的。区别在于,i + "";
基本上是利用副作用来实现其目的,这可能会使初学者更难理解。