如果我将一个字符转换为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 行写什么?