Java int to String - Integer.toString(i)vs new Integer(i).toString()

mar*_*pes 419 java string int

有时java困惑我.
我有大量的int初始化.

什么是真正的差异?

  1. Integer.toString(i)
  2. new Integer(i).toString()

Jea*_*ean 542

Integer.toString在类中调用静态方法Integer.它不需要实例Integer.

如果您调用new Integer(i),则创建一个type实例Integer,它是一个封装int值的完整Java对象.然后你调用toString它上面的方法让它返回一个自己的字符串表示.

如果您只想打印一个int,那么您将使用第一个,因为它更轻,更快并且不使用额外的内存(除了返回的字符串).

如果你想要一个表示整数值的对象 - 例如将它放在一个集合中 - 你会使用第二个,因为它为你提供了一个完整的对象来完成你无法做到的所有事情int.


oks*_*ayt 96

new Integer(i).toString()首先创建一个(冗余的)包装器对象i(它本身可能是一个包装器对象Integer).

Integer.toString(i) 是首选,因为它不会创建任何不必要的对象.


fhu*_*cho 42

另一种选择是静态String.valueOf方法.

String.valueOf(i)
Run Code Online (Sandbox Code Playgroud)

感觉略多于权Integer.toString(i)给我.当i的类型改变时,例如从intto 改变,double代码将保持正确.

  • 是.除非你必须使用RADIX(在这种情况下你必须使用Integer.toString) (2认同)

小智 14

  1. new Integer(i).toString();

    此语句创建Integer的对象,然后调用其方法toString(i)返回Integer值的String表示形式.

  2. Integer.toString(i);

    返回表示特定int(整数)的String对象,但这toString(int)是一个static方法.

摘要在第一种情况下它返回对象字符串表示,其中在第二种情况下它返回整数的字符串表示.

  • 哪一个在性能方面更好? (3认同)

小智 14

我也强烈推荐使用

int integer = 42;
String string = integer + "";
Run Code Online (Sandbox Code Playgroud)

简单有效.

  • 这绝对是一种糟糕的形式,因为它既依赖于Java语言中相当微妙的部分,又效率低于Integer.toString(i).见[此SO帖子](http://stackoverflow.com/questions/4105331/how-to-convert-from-int-to-string) (38认同)

小智 11

虽然我喜欢fhucho的推荐

String.valueOf(i)
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,这种方法实际上是召唤

Integer.toString(i)
Run Code Online (Sandbox Code Playgroud)

因此,String.valueOf(i)如果您喜欢它的读取方式,并且您不需要基数,但也知道它的效率低于Integer.toString(i).