String.valueOf(someVar) vs ("" + someVar)

String.valueOf(someVar) vs ("" + someVar)

我想知道两种方法的区别。我现在正在处理一些旧代码,它们通过连接空字符串 "".

primitive 值设置为 String
obj.setSomeString("" + primitiveVariable);

但是在这个 link Size of empty Java String 中它说 如果你为每个实例创建一个单独的空字符串,那么显然这将占用更多内存。

所以我想到了在Stringclass中使用valueOf方法。我检查了文档 String.valueOf() 它说 If the argument is null, then a string equal to "null";否则,返回 obj.toString() 的值。

那么哪种方法更好

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

上述过程是在 List 次迭代中完成的,迭代次数超过 600,预计将来会增加。

Q. So which one is the better way

一个。 obj.setSomeString(String.valueOf(primitiveVariable)) 通常是更好的方法。它更整洁,更家庭化。这将 primitiveVariable 的值打印为 String,而另一个将其打印为 int 值。第二种方式更像是 "hack," 并且组织性较差。 另一种方法是使用 Integer.toString(primitiveVariable),这与 String.valueOf.

基本相同

另请参阅this post and this one too

当您执行 "" 时,不会创建对象。它将创建一个字符串文字。 There is a differenc(How can a string be initialized using " "?) 实际上。

谈到你的实际问题,

来自String concatenation docs

The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method.

所以你创建 StringBuilder 对象是不必要的,然后是给另一个 String 对象。

然而valueOf直接给你一个String对象。加油吧。

抛开性能,想一想吧。为什么你连接空字符串,而实际上你想将 int 转换为 String :)