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。