我们经常遇到一个场景,我们需要传递一个原语的String表示,然后我们不经常使用
WrapperClass.toString() ;
有时我们通常写
i + "";
如果我们检查任何包装器类的toString实现,它每次调用它时都会创建一个新的String对象。对于原语+“”也是如此(因为运行时的连接将创建新的String对象)
它们之间是否有任何区别,或者它们只是将基元转换为String对象的替代方法;
答案 0 :(得分:7)
我个人喜欢String.valueOf(i)
:
"" + i
- 该代码表示字符串连接,这根本不是你所追求的。答案 1 :(得分:5)
善意。
写i + "";
,你可能会把它留给代码的未来维护者(很可能就是你)来弄清楚输出是什么。
WrapperClass.toString();
更明确,虽然更详细,但其意图更清晰。此外,weak typing不是您通常在Java中看到的,所以我建议您坚持编写惯用的Java代码。
编译后,发出的字节码很可能是相同或相似的。在jitting之后和运行期间,您可以预期差异将被有效地消除。
所以,最后,这是一个风格问题,虽然我建议使用更详细的代码版本。
答案 2 :(得分:3)
从功能上讲,它们是相同的。不同的是,i + "";
基本上使用副作用来归档其目的,这可能使初学者更难理解。