怎么会发生这种情况:
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?
Run Code Online (Sandbox Code Playgroud)
基本上,我看到a char是16位.因此,如果将其转换为a byte,为什么没有数据丢失?(转换为int后的值相同)
在此先感谢您回答我这个无知的小问题.:P
编辑:哇,发现我的原始输出实际上按预期执行,但我刚刚更新了上面的代码.基本上,将一个字符强制转换为一个字节,然后将其强制转换为char,并保留其原始的2字节值.这是怎么发生的?