将int转换为String的最有效方法是什么?
说我有:
int someValue = 42; 现在我想将该int值转换为一个string。 哪种方法更有效率?
 // One String stringValue = Integer.toString(someValue); // Two String stringValue = String.valueOf(someValue); // Three String stringValue = someValue + ""; 
我只是好奇,如果有任何真正的差异,或者比另一个更好?
testing了数字10的10m分配
 One: real 0m5.610s user 0m5.098s sys 0m0.220s Two: real 0m6.216s user 0m5.700s sys 0m0.213s Three: real 0m12.986s user 0m11.767s sys 0m0.489s 
一个似乎赢了
编辑:在Mac OS X 10.5下,JVM是标准的“/ usr / bin / java”
java版本“1.5.0_16” Java(TM)2运行环境,标准版(build 1.5.0_16-b06-284) Java HotSpot(TM)客户端虚拟机(构build1.5.0_16-133,混合模式,共享)
更多编辑:
代码按要求
 public class One { public static void main(String[] args) { int someValue = 10; for (int i = 0; i < 10000000; i++) { String stringValue = Integer.toString(someValue); } } } 
 情况2和3相似 
 运行使用 
 javac *.java; time java One; time java Two; time java Three 
 即使根据cobbal的测量 ,#1似乎是最快的,我强烈build议使用String.valueOf() 。 我的理由是这个调用没有明确包含参数的types,所以如果你以后决定把它从int改成double,那么就不需要修改这个调用。  #1与#2相比速度的增长只是最小的,众所周知,“不成熟的优化是万恶之源”。 
 第三个解决scheme是不可能的,因为它隐式地创build了一个StringBuilder并附加了组件(在这个例子中是数字和空string),最后把它转换成一个string。 
前两个例子实际上是相同的,因为String.valueOf(int)使用Integer.toString(int)方法。 第三个是丑陋的,可能效率较低,因为级联在Java中很慢。
看看JRE的源代码,你可能会看到不同之处。 或者没有。 实际上Strinv.valueOf(int foo)实现如下:
 public static String valueOf(int i) { return Integer.toString(i, 10); } 
和Integer.toString(int foo,int基数)
 public static String toString(int i, int radix) { ... if (radix == 10) { return toString(i); } ... } 
这意味着如果你使用基数10,你最好直接调用Integer.toString(int foo)。 对于其他情况使用Integer.toString(int foo,int radix)。
concat解决scheme首先将int值转换为一个String,然后与空string连接。 这显然是最昂贵的情况。
(David Hanak对面)
即使根据cobbal的测量,#1似乎是最快的,我强烈build议使用Integer.toString()。 我的理由是这个调用明确地包含了参数的types,所以如果你以后决定把它从int改成double,很明显这个调用已经改变了。 如果是二进制格式,你会这样做,不是吗? #1与#2相比速度的增长只是最小的,众所周知,“不成熟的优化是万恶之源”。
  "" + int是如David Hanak所示的那样慢。 
  String.valueOf() inturn调用Integer.toString() 。 因此,使用Integer.toString()更好。 
 所以, Integer.toString()是最快的..