1. 程式人生 > >int 轉 String 的效率大比拼

int 轉 String 的效率大比拼

先說一下我自己的實驗結論吧,int 轉 String 的三個方法(假設 x 是int 型變數):

①""+x,效率最低;

②Integer.toString( x ),效率最高;

③String.valueOf( x ),效率比②低一點比①好不少。

詳情如下:

有一哥們出了個題目,本來不想看的,太簡單,不過看看別人的演算法也是不錯的。題目見下面:

image

看見一個很給力的解答,引用上來:

image

看到這個答案,我就知道自己沒有白去看帖子了,呵呵。不過上面的 int len = (“” + x).length() 讓我想起了另一個 int 轉 String 的方法: Integer.toString(x) ,不知道哪個效率高一點,自己分析了一下,前者多了一個 "" 物件,而後者比較完美,應該是後者效率高點吧。如是就百度了一下,發現還有另外一種方法: String.valueOf(x),百度的結果是 Integer.toString(x) 效率大於 String.valueOf(x) 約等於 ""+x 。自己隨即也自己此寫了斷程式碼驗證了一下,實踐出真知嘛。

程式碼如下:

package cn.coolong.com;
public class Wish {
    public static void main(String[] args) {
        toString1();
        toString2();
        toString3();
    }
    public static void toString1() {
        String str = null;
        long start = System.currentTimeMillis();
        for (int i = 0; i <= 1000000; i++) {
            str = i + "";
        }
        System.out.println(System.currentTimeMillis() - start);
    }
    public static void toString2() {
        String str = null;
        long start = System.currentTimeMillis();
        for
(int i = 0; i <= 1000000; i++) {
            str = Integer.toString(i);
        }
        System.out.println(System.currentTimeMillis() - start);
    }
    public static void toString3() {
        String str = null;
        long start = System.currentTimeMillis();
        for (int i = 0; i <= 1000000; i++) {
            str = String.valueOf(i);
        }
        System.out.println(System.currentTimeMillis() - start);
    }
}

實驗了幾次,結果如下:

Methods toString1() toString2() toString3()
1 498 164 181
2 520 166 180
3 456 153 160
4 444 149 160
5 567 189 200
6 457 150 165

可見, "" + x 的效率最低;String.valueOf( x ) 和 Integer.toString( x ) 的效率相當,但是 Integer.toString( x )的效率稍微有點領先。

---EOF---