为什么在将10000000转换为char时会得到38528?

It'*_*ok. 0 java casting integer-overflow

Java使用32位作为字符提示-因此最大值为65536。

但是以下代码为我提供了标题中报告的结果。

public static void main(String[] args) {
    int a = 10000000;
    char b = 33;
    b = (char)a;
    System.out.println((int)b);

}
Run Code Online (Sandbox Code Playgroud)

Max*_*mer 10

A char是16位,而不是32位。

65535是a的最大值char,并且10000000大于该最大值,因此您无法将该值存储在中char

10000000 在二进制是 100110001001011010000000

现在,当将其强制转换为char“适合”的16位剩余的所有位时,将剩下1001011010000000

1001011010000000十进制的二进制是38528