Как получилось:
char a = '\uffff'; //Highest value that char can take - 65535
byte b = (byte)a; //Casting a 16-bit value into 8-bit data type...! Isn't data lost here?
char c = (char)b; //Let get the value back
int d = (int)c;
System.out.println(d); //65535... how?
В принципе, я увидел, что char
- 16 бит. Поэтому, если вы внесете его в byte
, то почему данные не теряются? (Значение будет одинаковым после литья в int)
Заранее спасибо за ответ на этот маленький неосведомленный вопрос.: P
EDIT: Woah, выяснил, что мой исходный результат действительно сделал так, как ожидалось, но я только что обновил код выше. В принципе, персонаж выливается в байт, а затем возвращается обратно в char, и его исходное 2-байтовое значение сохраняется. Как это происходит?