2017-07-29 48 views
2

我想知道两种方法的区别。有一些我现在正在工作的旧代码,他们将primitive值设置为String值,并与一个空字符串""连接。String.valueOf(someVar)vs(“”+ someVar)

obj.setSomeString("" + primitiveVariable); 

但在这个环节Size of empty Java String它说,如果要创建为每个实例单独空字符串,那么很明显,这将需要更多的内存。

所以我想到在String类中使用valueOf方法。我检查了文档String.valueOf()它说如果参数为空,那么一个字符串等于“null”;否则,返回obj.toString()的值。

所以哪一个是更好的方式

  1. obj.setSomeString("" + primitiveVariable);
  2. obj.setSomeString(String.valueOf(primitiveVariable));

中的哪一个具有尺寸大于600 List迭代中完成上述过程,预计未来会增加。

+0

你误会了链接答案的要点。你是**不是**创建一个新的实例。 – luk2302

+0

但是每当我们编写一个空字符串并且相应的类被执行时,会有一个为该空字符串创建的String对象? –

+0

@ luk2302是的。这就是回报。 –

回答

2

当你做""是不会创建一个对象。它将创建一个字符串文字。 There is a differencHow can a string be initialized using " "?)。

来到您的实际问题,

String concatenation docs

Java语言提供对字符串连接运算符(+)的特殊支持,以及对其他对象的字符串转换。字符串连接通过StringBuilder(或StringBuffer)类及其append方法实现。

因此,你非常不情愿地创建StringBuilder对象,然后给出另一个String对象。

但是valueOf直接给你一个String对象。只是为了它。

除了表现,只是想一般。为什么你要连接空字符串,实际上当你想要将int转换为字符串时:)

2

问:那么,哪一个是更好的办法

A. obj.setSomeString(String.valueOf(primitiveVariable))通常是更好的办法。它更整洁,更国内。这将primitiveVariable的值输出为String,而另一个则将其输出为int值。第二种方式更多的是“黑客”,组织性较差。 另一种方法是使用Integer.toString(primitiveVariable),它基本上与String.valueOf相同。

也期待在this postthis one too

相关问题