1. 程式人生 > >將對象轉換為字符串(效率)

將對象轉換為字符串(效率)

cnblogs 明顯 obj 類型 ++ loop builder 拼接 mil

把一個基本數據類型轉為字符串,基本數據類型.toString()是最快的方式、String.valueOf(數據)次之、數據+””最慢

把一個基本數據類型轉為一般有三種方式,我有一個Integer型數據i,可以使用i.toString()、String.valueOf(i)、i+””三種方式,三種方式的效率如何,看一個測試

 1     private static void testFun() {
 2 
 3         int loopTime = 50000;
 4         //case1:String.valueOf()
 5         Integer i = 0; long startTime = System.currentTimeMillis();
6 for (int j = 0; j < loopTime; j++) 7 { 8 String str = String.valueOf(i); 9 } 10 System.out.println("String.valueOf():" + (System.currentTimeMillis() - startTime) + "ms"); 11 //case2:obj.toString() 12 startTime = System.currentTimeMillis();
13 for (int j = 0; j < loopTime; j++) 14 { 15 String str = i.toString(); 16 } 17 System.out.println("Integer.toString():" + (System.currentTimeMillis() - startTime) + "ms"); 18 //case3:obj+"" 19 startTime = System.currentTimeMillis(); for (int
j = 0; j < loopTime; j++) 20 { 21 String str = i + ""; 22 } 23 System.out.println("i + \"\":" + (System.currentTimeMillis() - startTime) + "ms"); 24 }

運行結果:

String.valueOf():19ms
Integer.toString():16ms
i + "":33ms

所以以後遇到把一個基本數據類型轉為String的時候,優先考慮使用toString()方法。

至於為什麽,很簡單:

1、String.valueOf()方法底層調用了Integer.toString()方法,但是會在調用前做空判斷

2、Integer.toString()方法就不說了,直接調用了

3、i + “”底層使用了StringBuilder實現,先用append方法拼接,再用toString()方法獲取字符串

三者對比下來,明顯是2最快、1次之、3最慢

將對象轉換為字符串(效率)