1. 程式人生 > >關於Java中char,int的互轉

關於Java中char,int的互轉

昨天做大疆的筆試題,遇到了這個蛋疼的問題,居然花了很多時間在這個小知識點上。下面總結下。

先來看看直接轉換會得到什麼結果:

        char c = 'a';
        int i = c;
        System.out.println("letter char to int: "+i);
        char c2 = '9';
        int i2 = c2;
        System.out.println("numeric char to int: "+i2);
        int i3 = 9;
        char c3 = (char
) i3; System.out.println("single int to char: "+c3); int i4 = 999999999; char c4 = (char) i4; System.out.println("big int to char: "+c4);

輸出:

letter char to int: 97
numeric char to int: 57
single int to char: (這裡其實輸出了一個製表符,即ACSII為9對應的字元)
big int to char: 짿

會發現char直接轉int會得到相應字元的ASCII碼值。注意到上面的轉換並沒有加強制轉換,這是因為byte、short、char在運算的時候本身就會先轉換成int再進行運算。當然加上也可以,對結果不影響。
而int轉char則必須要加上強制轉換(小型別轉大型別),轉換結果也是將int值作為ACSII碼值去找對應的字元。

如果想將一個字元9轉換成數字9,或者將數字9轉換成字元9,就要使用如下操作:

        char c = '9';
        int i = Character.getNumericValue(c);
        System.out.println("char to int: "
+i); int j = 9; char c2 = (char) (j+48); System.out.println("int to char: "+c2);

輸出

char to int: 9
int to char: 9

注意:以上操作是不安全的,必須得首先確定能夠轉換,才能進行上述操作。實際使用時一定要判斷。