请解释
的输出原因byte c = (byte) (-512);
System.out.print(c);
是0
。
答案 0 :(得分:1)
Java中的字节范围是-128 to 127
。由于-512不在范围内,编译器将要求显式类型转换。因此,您必须将-512(整数)转换为字节。当程序运行时会发生什么,JVM只删除高24位以适应8位的-512。
-512 = 11111111111111110000001000000000 (int)
(byte) -512 = 00000000 (byte) //truncated the upper 24 bits// = 0