Символ в байт? (Java)

Как это происходит:

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's get the value back
int d = (int)c;
System.out.println(d); //65535... how?

В принципе, я видел, что char 16-битный. Следовательно, если вы преобразуете его в байт , почему никакие данные не будут потеряны? (Значение такое же после преобразования в int)

Заранее спасибо за ответ на этот мой маленький невежественный вопрос. : P

РЕДАКТИРОВАТЬ: Ого, обнаружил, что мой исходный результат действительно соответствует ожиданиям, но я только что обновил приведенный выше код. По сути, символ преобразуется в байт, а затем снова преобразуется в char, и его исходное 2-байтовое значение сохраняется. Как это происходит?

17
задан wakachamo 10 February 2011 в 15:58
поделиться