Если я преобразую символ в 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, чтобы получить правильный результат?