Java int to String – Integer.toString(i)vs new Integer(i).toString()
有时候java会困惑我。
我有大量的int初始化。
真正的区别是什么?
Integer.toString(i)
-
new Integer(i).toString()
Integer.toString
调用Integer
类中的静态方法。 它不需要Integer
的实例。
如果你调用new Integer(i)
你可以创build一个Integer
types的实例,它是一个完整的Java对象,封装了你的int的值。 然后你调用toString
方法来要求它返回自己的string表示。
如果你想要的只是打印一个int
,你可以使用第一个,因为它更轻,更快,并且不使用额外的内存(除了返回的string)。
如果你想要一个表示一个整数值的对象 – 例如把它放在一个集合里面,那么就使用第二个对象,因为它给了你一个完整的对象来完成所有你不能用一个int
。
new Integer(i).toString()
首先创build一个(冗余的)包装对象(它本身可能是一个包装对象Integer
)。
Integer.toString(i)
是首选,因为它不会创build任何不必要的对象。
另一个选项是静态的String.valueOf
方法。
String.valueOf(i)
它感觉稍微比Integer.toString(i)
适合我。 当我的types改变,例如从int
到double
,代码将保持正确。
-
new Integer(i).toString();
该语句创buildInteger的对象,然后调用其方法
toString(i)
返回Integer值的String表示 。 -
Integer.toString(i);
它返回表示特定int(整数)的String对象 ,但是这里
toString(int)
是一个static
方法。
总结是在第一种情况下它返回的对象string表示forms,在第二种情况下,它返回整数的string表示forms。
我也强烈推荐使用
int integer = 42; String string = integer + "";
简单而有效。
虽然我喜欢fhucho的推荐
String.valueOf(i)
讽刺的是,这个方法实际上是调用的
Integer.toString(i)
因此,使用String.valueOf(i)
如果你喜欢它的读法,你不需要基数,但也知道它比Integer.toString(i)
效率低。
在性能测量方面,如果考虑时间性能,那么Integer.toString(i); 如果你打电话的次数less于1亿次,那么这个费用很高。 否则,如果它是超过1亿次调用,那么新的整数(10).toString()将performance更好。
下面是通过你的代码可以尝试衡量的性能,
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();
会占用更多的内存,因为它会每次创build对象,所以会发生内存碎片。
更好:
Integer.valueOf(i).toString()
简单的方法就是将整数""
连接起来:
Int i = 100; String s = ""+ i;
现在s
将有"100"
作为string值。
这里Integer.toString
调用Integer类中的静态方法。 它不需要调用的对象。
如果你调用new Integer(i)
你首先创build一个Integertypes的实例,它是一个完整的Java对象,封装了你的int i的值。 然后你调用toString
方法来要求它返回自己的string表示。
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