Как это происходит:
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-байтовое значение сохраняется. Как это происходит?