Как так получилось:
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 бит. Следовательно, если вы поместите его в byte
, почему никакие данные не будут потеряны? (Значение такое же после преобразования в int)
Заранее спасибо за ответ на этот мой маленький невежественный вопрос. :П
РЕДАКТИРОВАТЬ: Ого, выяснилось, что мой исходный результат действительно соответствует ожиданиям, но я только что обновил приведенный выше код. По сути, символ преобразуется в байт, а затем снова преобразуется в char, и его исходное 2-байтовое значение сохраняется. Как это произошло?