繁体   English   中英

Long.toString(i)vs i +“”之间的区别

[英]Difference between Long.toString(i) vs i + “”

我们经常遇到一个场景,我们需要传递一个原语的String表示,然后我们不经常使用它

  WrapperClass.toString() ;

有时我们经常写

  i + "";

如果我们检查任何包装器类的toString实现,它每次调用它时都会创建一个新的String对象。 对于原语+“”也是如此(因为运行时的连接将创建新的String对象)

那么它们之间是否有任何区别,或者它们只是将原语转换为String对象的另一种方法;

我个人喜欢String.valueOf(i)

  • 您可以将它与所有类型(甚至非基元)一起使用
  • 它是null安全的(假设你在转换null值时对字符串值“null”感到满意)
  • 它表达了你的意图远胜于"" + i - 代码表示字符串连接,这根本不是你所追求的。

好的意图。

i + ""; ,你可能会把它留给代码的未来维护者(很可能是你)来弄清楚输出是什么。

WrapperClass.toString(); 更明确,虽然更详细,但其意图更清晰。 此外, 弱打字不是你通常在Java中看到的,所以我建议你坚持编写惯用的Java代码。

编译后,发出的字节码很可能是相同或相似的。 在jitting之后和运行时期间,您可以预期差异将被有效地消除。

所以,最后,这是一个风格问题,虽然我建议使用更详细的代码版本。

在功能上,它们是相同的。 不同的是, i + ""; 基本上是使用副作用来归档其目的,这可能使初学者更难理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM