有时java让我困惑。 我有大量的int初始化要做。
真正的区别是什么?
Integer.toString(我) 新的整数(我).toString ()
有时java让我困惑。 我有大量的int初始化要做。
真正的区别是什么?
Integer.toString(我) 新的整数(我).toString ()
当前回答
新的整数(我).toString (); 这条语句创建了Integer对象,然后调用它的方法toString(i)来返回Integer值的String表示形式。 Integer.toString(我); 它返回String对象,表示特定的int(整数),但这里toString(int)是一个静态方法。
在第一种情况下,Summary返回对象的字符串表示形式,在第二种情况下,它返回整数的字符串表示形式。
其他回答
1. integer.tostring(我)
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.新整数(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
在性能度量方面,如果你考虑的是时间性能,那么Integer.toString(i);如果你调用的次数少于1亿次就会很昂贵。否则,如果调用次数超过1亿次,则新的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));
}
在内存方面,
新的整数(我).toString ();
会占用更多的内存,因为它每次都会创建对象,所以会发生内存碎片。
在这里 整数。toString调用Integer类中的静态方法。它不需要对象调用。
如果调用new Integer(i),首先创建一个Integer类型的实例,它是一个完整的Java对象,封装了int i的值。然后调用它的toString方法,要求它返回自己的字符串表示形式。
新的整数(我).toString (); 这条语句创建了Integer对象,然后调用它的方法toString(i)来返回Integer值的String表示形式。 Integer.toString(我); 它返回String对象,表示特定的int(整数),但这里toString(int)是一个静态方法。
在第一种情况下,Summary返回对象的字符串表示形式,在第二种情况下,它返回整数的字符串表示形式。
new Integer(i). tostring()首先在i周围创建一个(冗余的)包装对象(它本身可能是一个包装对象Integer)。
首选Integer.toString(i),因为它不会创建任何不必要的对象。