![](/img/trans.png)
[英]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.