簡體   English   中英

Java int to String - Integer.toString(i)vs new Integer(i).toString()

[英]Java int to String - Integer.toString(i) vs new Integer(i).toString()

有時java困惑我。
我有大量的int初始化。

真正的區別是什么?

  1. Integer.toString(i)
  2. 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 + "";

簡單有效。

  1. new Integer(i).toString();

    此語句創建Integer的對象,然后調用其方法toString(i)返回Integer值的String表示形式

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM