1. 程式人生 > >java中int轉string,string轉int效率對比

java中int轉string,string轉int效率對比

string轉int,兩種方法:

1、Interger.parseInt(String)

2、Interger.valueOf(String).intValue()

第二種方法可以去看原始碼,實現了第一種方法。


註釋大概就是這樣的意思

/**
      *返回一個包含整數的物件
      *指定的{@ String String}的值。 這個說法是
      *被解釋為表示一個有符號的十進位制整數
      *就好像這個論據是給予{@link的
      * #parseInt(java.lang.String)}方法。 結果是一個
      表示整數值的整數物件
      *由字串指定。
     *
      換句話說,這個方法返回一個{@code Integer}
      *物件等於以下值:
     *
      * <blockquote>
      * {@code new Integer(Integer.parseInt(s))}
      * </ blockquote>
     *
      * @param是要解析的字串。
      * @返回一個儲存值的{整數}物件
      *由字串引數表示。
      * @exception NumberFormatException如果字串不能被解析
      *作為一個整數。
     */

在valueOf()裡面實現了parseInt()方法。時間對比第二種比第一種要快了很多。

Integer.parseInt(str) : 21
Integer.valueOf(str).intValue() : 14

--------------------------------------------------------------------------------

int 轉string一般用三種方法:

第一種:number + ""

第二種:string.valueOf()

第三種:.toString()

先說第一種,簡單粗暴。

第二種方法:底層使用的依舊是.toString()方法

第三種就是toString()

上程式碼。

int num = 888888;

        //(1)num + ""
        long start = System.currentTimeMillis();//得到開始執行時系統時間
        for(int i=0; i<100000; i++){
            String str = num + "";
        }
        long end = System.currentTimeMillis();//得到結束執行時系統時間
        System.out.println("num + \"\" : " + (end - start));

        //(2)String.valueOf(num)
        start = System.currentTimeMillis();
        for(int i=0; i<100000; i++){
            String str = String.valueOf(num);
        }
        end = System.currentTimeMillis();
        System.out.println("String.valueOf(num) : " + (end - start));

        //(3)Integer.toString(num)
        start = System.currentTimeMillis();
        for(int i=0; i<100000; i++){
            String str = Integer.toString(num);
        }
        end = System.currentTimeMillis();
        System.out.println("Integer.toString(num) : " + (end - start));
結果就是

num + "" : 82
String.valueOf(num) : 32
Integer.toString(num) : 9

經過多次的反覆測試,toString()是最快的,num+""是最慢的,在使用String.valueOf()中原始碼是這樣的。

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
也就是說在使用的時候,不用去判斷所傳的物件是否為null,但是尤其注意,如果傳的為空,返回來的是一個為null的字串而不是null值,這個地方需要謹記。