天天看點

随筆:Java中String、int互轉,JavaScript中String、int互轉Java:JavaScript

Java:

int 轉 String

1. String.valueOf(i);

2. Integer.toString(i);

3. i+"";
           

解析:

      1.第一種方法:String.valueOf(int i);

      這種方式我們可以檢視源碼:

随筆:Java中String、int互轉,JavaScript中String、int互轉Java:JavaScript

      哦豁,原來這裡面封裝的就是第二種,我們要用的方法,是以這兩種方法的效率差不多。

      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要注意的是,因為可能字元串種存在非數字,是以要抛異常。

随筆:Java中String、int互轉,JavaScript中String、int互轉Java:JavaScript

直接調用會預設 10 進制

随筆:Java中String、int互轉,JavaScript中String、int互轉Java:JavaScript

這裡 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