String.valueOf(someVar)vs(“”+ someVar)

时间:2017-07-29 07:44:55

标签: java string string-concatenation value-of

我想知道两种方法的区别。我现在正在使用一些旧代码,通过与空字符串primitive连接,将String值设置为""

obj.setSomeString("" + primitiveVariable);

但在此链接Size of empty Java String中,它表示如果您为每个实例创建单独的空字符串,那么显然会占用更多内存。

所以我考虑在valueOf课程中使用String方法。我检查了文档String.valueOf()它说如果参数为null,则字符串等于“null”;否则,返回obj.toString()的值。

那么哪一个是更好的方式

  1. obj.setSomeString("" + primitiveVariable);
  2. obj.setSomeString(String.valueOf(primitiveVariable));
  3. 上述过程是在List次迭代中完成的,其大小超过600,并且预计将来会增加。

2 个答案:

答案 0 :(得分:2)

  

Q值。那么哪一个是更好的方式

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

另请参阅this postthis one too

答案 1 :(得分:2)

当您执行不会创建对象的""时。它将创建一个String文字。 There is a differencHow can a string be initialized using " "?)实际上。

来到你的实际问题,

来自String concatenation docs

  

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

所以你不必再创建StringBuilder对象,然后再给出另一个String对象。

但是valueOf直接给你一个String对象。只是去吧。

除了表现之外,一般都要考虑一下。为什么要与空字符串连接,实际上你想将int转换为String:)

相关问题