[英]Integer.toString(int i) vs String.valueOf(int i)
[英]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)
,则创建一个Integer
类型的实例,它是一个封装int值的完整Java对象。 然后在其上调用toString
方法,要求它返回自身的字符串表示。
如果您只想打印一个int
,那么您将使用第一个,因为它更轻,更快并且不使用额外的内存(除了返回的字符串)。
如果你想要一个表示整数值的对象 - 例如将它放在一个集合中 - 你会使用第二个,因为它为你提供了一个完整的对象来完成你无法用裸int
做的所有事情。 。
new Integer(i).toString()
首先在i
周围创建一个(冗余的)包装器对象(它本身可能是一个包装器对象Integer
)。
Integer.toString(i)
是首选,因为它不会创建任何不必要的对象。
另一个选项是静态String.valueOf
方法。
String.valueOf(i)
感觉比Integer.toString(i)
对我更正确。 当i的类型改变时,例如从int
变为double
,代码将保持正确。
我也强烈推荐使用
int integer = 42;
String string = integer + "";
简单有效。
new Integer(i).toString();
此语句创建Integer的对象,然后调用其方法toString(i)
以返回Integer值的String表示形式 。
Integer.toString(i);
它返回表示特定int(整数)的String对象 ,但这里toString(int)
是一个static
方法。
摘要在第一种情况下它返回对象字符串表示,其中在第二种情况下它返回整数的字符串表示。
虽然我喜欢fhucho的推荐
String.valueOf(i)
具有讽刺意味的是,这种方法实际上是召唤
Integer.toString(i)
因此,如果您喜欢它的读取方式并且不需要基数,请使用String.valueOf(i)
,但也要知道它的效率低于Integer.toString(i)
。
在性能测量方面,如果您正在考虑时间性能,那么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));
}
在记忆方面,
new Integer(i).toString();
将占用更多内存,因为它每次都会创建对象,因此会发生内存碎片。
更好:
Integer.valueOf(i).toString()
简单的方法就是用整数连接""
:
int i = 100;
String s = "" + i;
现在s
将有100
作为字符串值。
这里Integer.toString
调用Integer类中的静态方法。 它不需要对象调用。
如果调用new Integer(i)
,首先要创建一个Integer类型的实例,它是一个封装int i值的完整Java对象。 然后在其上调用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.