在Java編程中,byte和char是常見的數據類型。byte是8位有符號整數,范圍從-128到127。而char是16位無符號整數,范圍從0到65535。由于二者數據類型差異,在編程過程中,我們會有使用byte和char數據類型進行轉換的需求。
byte轉char
byte b = 121; char c = (char) b; System.out.println(c);
運行結果:y
在byte轉char的過程中,我們需要強制類型轉換。由于b是有符號整數,如果直接轉換無法得到正確結果。所以需要先將高位全部補0,再轉換成char。
char轉byte
char c = 'x'; byte b = (byte) c; System.out.println(b);
運行結果:120
在char轉byte的過程中,我們同樣需要強制類型轉換。但是由于byte是有符號整數,而char是無符號整數,如果直接轉換會失去符號位。所以需要在轉換時保留符號位,通過減去128來實現。
除了上述基本類型轉換之外,在Java中還有String字符串和byte數組之間的轉換。我們可以先將String字符串轉換為byte數組,再將其轉換為char數組,最后再以String字符串形式輸出。
String s = "Hello World!"; byte[] b = s.getBytes(); char[] c = new char[b.length]; for (int i = 0; i< b.length; i++) { c[i] = (char) (b[i] & 0xff); } String result = new String(c); System.out.println(result);
運行結果:Hello World!
在以上代碼中,我們先將String字符串轉換為byte數組,這里的getBytes()方法會將String字符串按照默認的字符集(UTF-8)轉換為byte數組。然后我們遍歷byte數組,將每個元素通過位運算(&)轉換成16位的char類型,最后將char數組轉換為String字符串輸出。
在編程過程中,學會byte和char數據類型的互相轉換是非常有用的。相信大家通過本文對此有了更深入的理解。