2

私は本で読んだことがあります:

..文字は、フードの下にある 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' を 2 回出力します (a はasciiの char 97 です)。

于 2012-08-08T03:01:55.160 に答える