Java 中的字节和字符转换
如果我把一个字符转换为,然后再转换回 ,该字符就会神秘地消失并成为其他东西。这怎么可能?byte
char
这是代码:
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
直到第 2 行,一切都很好:
在第1行中,我可以在控制台中打印“a”,它将显示“È”。
在第2行中,我可以在控制台中打印“b”,它将显示-56,即200,因为字节是签名的。200 是“È”。所以它仍然很好。
但是第3行出了什么问题呢?“c”变成别的东西,程序打印 。这是完全不同的东西。? 65480
为了获得正确的结果,我应该在第3行写些什么?