【发布时间】:2015-09-28 10:50:56
【问题描述】:
我正在准备参加 Java 考试,并且正在阅读“OCA Java SE 8 程序员学习指南(考试 1Z0-808)”。在运营商部分我发现了这句话:
移位运算符:移位运算符接受两个类型必须为 可转换为整数基元。
我觉得很奇怪,所以我用 long 测试了它:
public class HelloWorld{
public static void main(String []args){
long test = 3147483647L;
System.out.println(test << 1);
}
}
它成功了,没有编译器错误并且结果是正确的。这本书有错误还是我误解了书中的引述?
【问题讨论】:
-
JLS 定义整数类型为"数值类型为整数类型byte、short、int、long、char,..." 并且对于移位运算符“如果移位运算符的每个操作数的类型在一元数值提升后不是原始整数类型,则为编译时错误。”