Java:
int 轉 String
1. String.valueOf(i);
2. Integer.toString(i);
3. i+"";
解析:
1.第一種方法:String.valueOf(int i);
這種方式我們可以檢視源碼:
哦豁,原來這裡面封裝的就是第二種,我們要用的方法,是以這兩種方法的效率差不多。
2.第二種就是我們調取 Integer 類裡面的靜态方法轉成 String 類型
3.i + "" 這種方式說實話看的是真的簡單,一般有時候也會用這種方法,因為好記啊。但是這種方法的運作效率會遠遠低于前兩種方法,為什麼?
因為在 Java 中對運算符 “+” 做了重載,主要方式是使用StringBuilder或者StringBuffer來實作的,類似于:
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();
’+’運算符的執行效率不高的原因應該就在之前的new StringBuilder等操作和之後的StringBuilder.toString等操作。
具體細節可以參考這篇部落格:https://blog.csdn.net/self_study/article/details/50880110
運作時間:
E/time: i+"" = 257
E/time: String.valueOf(i) = 140
E/time: Integer.toString(i) = 159
這裡還有一個點,就是當 i 為正數且小于 100 的時候,前兩種方法會調用函數中的數組 TENS 和 ONES 來進行快速計算:
/** TENS[i] contains the tens digit of the number i, 0 <= i <= 99. */
private static final char[] TENS = {
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
'3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
'4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
'5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
'6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
'7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
'8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
'9', '9', '9', '9', '9', '9', '9', '9', '9', '9'
};
/** Ones [i] contains the tens digit of the number i, 0 <= i <= 99. */
private static final char[] ONES = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
};
每個數組都有 100 的長度,都是用來處理0~99這100個數字
是以我們改一下變量的值修改為10,會明顯發現運作時間的縮短:
E/time: i+"" = 199
E/time: String.valueOf() = 7
E/time: Integer.toString() = 6
String 轉 int
1. i=Integer.parseInt(s);//預設十進制
2. i=Integer.valueOf(s).intValue();
注意:String 轉int要注意的是,因為可能字元串種存在非數字,是以要抛異常。
直接調用會預設 10 進制
這裡 valueOf 就是預設調用的十進制的 parseInt 方法
JavaScript
int 轉 String
js 的就比較簡單了,我也看⑧見源碼
var x=100
a = x.toString()
String 轉 int
var str='1250' ;
alert( Number(str) ); //得到1250
alert(parseInt(str)); //得到1250
var str1='00100';
alert( Number(str1) ); //得到100
alert(parseInt(str1)); //得到64