有时,java使我感到困惑。
我要进行大量的int初始化。
什么是真正的差异?
Integer.toString(i)
new Integer(i).toString()
"" + 42
更好了,因为它需要一个StringBuilder
比Integer
。重得多的中间对象。
"" + 42
因为在附加整数字符串的情况下,您可能最终会添加值而无法实现。
有时,java使我感到困惑。
我要进行大量的int初始化。
什么是真正的差异?
Integer.toString(i)
new Integer(i).toString()
"" + 42
更好了,因为它需要一个StringBuilder
比Integer
。重得多的中间对象。
"" + 42
因为在附加整数字符串的情况下,您可能最终会添加值而无法实现。
Answers:
Integer.toString
在类中调用static方法Integer
。它不需要的实例Integer
。
如果调用new Integer(i)
,则创建type的实例Integer
,该实例是封装int值的完整Java对象。然后,toString
在其上调用方法以要求它返回自身的字符串表示形式。
如果您只想打印int
,则可以使用第一个,因为它更轻,更快并且不占用额外的内存(除了返回的字符串)。
如果您想要一个表示整数值的对象(例如,将其放入集合中),则可以使用第二个对象,因为它为您提供了一个成熟的对象,可以执行裸操作无法完成的所有事情int
。
另一种选择是静态String.valueOf
方法。
String.valueOf(i)
对我来说,这感觉更合适Integer.toString(i)
。当i的类型更改时,例如从int
到double
,代码将保持正确。
我也强烈建议使用
int integer = 42;
String string = integer + "";
简单有效。
Integer.toString()
可能会使用一些额外的击键,但更为清晰,这对于维护代码非常重要。
toString()
方法吗?
在性能衡量方面,如果您考虑时间性能,则Integer.toString(i); 如果您拨打的电话少于1亿次,则价格昂贵。否则,如果调用次数超过1亿,则新的Integer(10).toString()的性能将更好。
以下是通过u可以尝试衡量性能的代码,
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));
}
在记忆方面,
新的Integer(i).toString();
每次创建对象都会占用更多的内存,因此会发生内存碎片。
new Integer(10).toString() can be simplified to Integer.toString(10)
”
更好:
Integer.valueOf(i).toString()
简单的方法是""
用整数连接:
int i = 100;
String s = "" + i;
现在s
将具有100
as字符串值。
这里
Integer.toString
在Integer类中调用静态方法。它不需要对象调用。
如果调用new Integer(i)
,则首先创建一个Integer类型的实例,它是一个完整的Java对象,封装了int i的值。然后,toString
在其上调用方法以要求它返回自身的字符串表示形式。
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
"" + 42
,但嘿,就是我。形式#2将产生一个新的整数对象(对于i的大多数值)作为中间对象。它也更打字。