次のようなコードを実行すると、「55536」と表示される。
int a1 = -10000; char c = (char)a1; int a2 = (int)c; System.out.println(a2);
「-10000」を二進数で表すと、
1111111111111111111111111111111111111111111111111101100011110000
になる。
charは2バイト、つまり16ビットまでしか扱えないので、charにキャストすると下位16ビットだけ取り出され、上位ビットは切り捨てられる。そうすると
1101100011110000
となる。これは10進数で言うと「55536」になる。 だから、「55536」と表示される。