【发布时间】:2016-11-08 17:48:07
【问题描述】:
谁能告诉我为什么下面的代码会抛出编译错误“无法从 int 转换为字节”?
byte x = 2;
byte y = (x >> 1);
我的意思是我清楚地将 x 和 y 都声明为字节,并且 'x >> 1' 将评估为 1,即仍然在一个字节的范围内。
另外当我做类似的事情时
byte x = -2;
System.out.println(x >>> 1);
我希望结果为 126,因为我在b1111 1101 的最左边移动了一个0,即0111 1110。但是控制台正在打印'2147483647',所以看起来我的字节在0被移入之前已经转换为整数。这是为什么呢?请帮帮我。
【问题讨论】:
-
x >> 1的类型是int。为什么?因为language specification 是这么说的。
标签: java type-conversion bit-shift