2

我在一本书中读到:

..characters 只是底层的 16 位无符号整数。这意味着您可以分配一个数字文字,假设它适合无符号的 16 位范围(65535 或更小)。

它给我的印象是我可以将整数分配给字符,只要它在 16 位范围内。

但我怎么能这样做:

char c = (char) 80000; //80000 is beyond 65535.

我知道演员们施展了魔法。但幕后究竟发生了什么?

4

1 回答 1

2

看起来它正在使用 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 )。

于 2012-08-08T03:01:55.160 回答