请解释一下这个Java程序输出

时间:2015-07-20 18:21:53

标签: java casting range byte

请解释

的输出原因
byte c = (byte) (-512);
System.out.print(c);

0

1 个答案:

答案 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