關於Java中char,int的互轉
阿新 • • 發佈:2019-02-09
昨天做大疆的筆試題,遇到了這個蛋疼的問題,居然花了很多時間在這個小知識點上。下面總結下。
先來看看直接轉換會得到什麼結果:
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
注意:以上操作是不安全的,必須得首先確定能夠轉換,才能進行上述操作。實際使用時一定要判斷。