有时java会困扰我 我有大量的 int 初始化。
真正的差异是什么?
Integer.toString(i)
new Integer(i).toString()
答案 0 :(得分:541)
Integer.toString
调用类Integer
中的静态方法。它不需要Integer
的实例。
如果调用new Integer(i)
,则创建类型为Integer
的实例,这是一个封装int值的完整Java对象。然后在其上调用toString
方法,要求它返回本身的字符串表示。
如果您只想要打印int
,那么您将使用第一个,因为它更轻,更快并且不使用额外的内存(除了返回的字符串)。
如果你想要一个表示整数值的对象 - 例如将它放在一个集合中 - 你会使用第二个,因为它为你提供了一个完整的对象来做你不能做的所有事情一个裸int
。
答案 1 :(得分:95)
new Integer(i).toString()
首先在i
周围创建一个(冗余的)包装器对象(它本身可能是一个包装器对象Integer
)。
Integer.toString(i)
是首选,因为它不会创建任何不必要的对象。
答案 2 :(得分:42)
另一种选择是静态String.valueOf
方法。
String.valueOf(i)
感觉对我来说比Integer.toString(i)
略胜一筹。当i的类型更改时,例如从int
更改为double
,代码将保持正确。
答案 3 :(得分:14)
new Integer(i).toString();
此语句创建Integer的对象,然后将其方法toString(i)
调用为返回Integer值的字符串表示。
Integer.toString(i);
返回表示特定int(整数)的String对象,但此处toString(int)
是static
方法。
摘要是在第一种情况下它返回对象字符串表示,其中在第二种情况下它返回整数的字符串表示。
答案 4 :(得分:13)
我强烈建议使用
int integer = 42;
String string = integer + "";
简单有效。
答案 5 :(得分:11)
虽然我喜欢fhucho的推荐
String.valueOf(i)
具有讽刺意味的是,这种方法实际上是在调用
Integer.toString(i)
因此,如果您喜欢它的读取方式并且不需要基数,请使用String.valueOf(i)
,但也要知道它的效率低于Integer.toString(i)
。
答案 6 :(得分:4)
就性能测量而言,如果您正在考虑时间性能,那么如果您的呼叫次数少于1亿次,则 Integer.toString(i); 会很昂贵。否则,如果超过1亿次调用,则 new Integer(10)。toString()将表现更好。
以下是您可以尝试测量性能的代码,
public static void main(String args[]) {
int MAX_ITERATION = 10000000;
long starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s = Integer.toString(10);
}
long endtime = System.currentTimeMillis();
System.out.println("diff1: " + (endtime-starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s1 = new Integer(10).toString();
}
endtime = System.currentTimeMillis();
System.out.println("diff2: " + (endtime-starttime));
}
就记忆而言,
new Integer(i).toString();
会占用更多内存,因为它每次都会创建对象,因此会发生内存碎片。
答案 7 :(得分:2)
更好:
Integer.valueOf(i).toString()
答案 8 :(得分:2)
简单的方法是将""
与整数:
int i = 100;
String s = "" + i;
现在s
将100
作为字符串值。
答案 9 :(得分:1)
下面
Integer.toString
调用Integer类中的静态方法。它不需要对象调用。
如果你调用new Integer(i)
,首先要创建一个Integer类型的实例,它是一个封装int i值的完整Java对象。然后在其上调用toString
方法,要求它返回自身的字符串表示。
答案 10 :(得分:0)
1。Integer.toString(i)
Integer i = new Integer(8);
// returns a string representation of the specified integer with radix 8
String retval = i.toString(516, 8);
System.out.println("Value = " + retval);
2。new Integer(i).toString()
int i = 506;
String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String