我在一本书中读到:
..characters 只是底层的 16 位无符号整数。这意味着您可以分配一个数字文字,假设它适合无符号的 16 位范围(65535 或更小)。
它给我的印象是我可以将整数分配给字符,只要它在 16 位范围内。
但我怎么能这样做:
char c = (char) 80000; //80000 is beyond 65535.
我知道演员们施展了魔法。但幕后究竟发生了什么?
我在一本书中读到:
..characters 只是底层的 16 位无符号整数。这意味着您可以分配一个数字文字,假设它适合无符号的 16 位范围(65535 或更小)。
它给我的印象是我可以将整数分配给字符,只要它在 16 位范围内。
但我怎么能这样做:
char c = (char) 80000; //80000 is beyond 65535.
我知道演员们施展了魔法。但幕后究竟发生了什么?
看起来它正在使用 int 值 mod 65536。以下代码:
int i = 97 + 65536;
char c = (char)i;
System.out.println(c);
System.out.println(i % 65536);
char d = 'a';
int n = (int)d;
System.out.println(n);
打印出 'a' 然后 '97' 两次(a 是ascii中的 char 97 )。