JLS状态:
如果除移位操作符外的整数操作符至少有一个操作数为
long
,则该操作符使用64位精度执行,并且该数值操作符的结果为long
类型。如果另一个操作数不是long
,则首先通过数字提升(§5.6)将其扩展为long
类型。否则,使用32位精度执行该操作,并且该数值运算符的结果类型为
int
。如果任何一个操作数不是int
类型,则首先通过数字提升将其扩展为int
类型。
然而当我尝试:
byte b = 18;
print(++b);
static void print(int a) {
System.out.println("Integer : " + a);
}
static void print(byte a) {
System.out.println("Byte : " + a);
}
结果是:
Byte: 19
我期望调用整数类型作为输入参数的方法。
其他整数运算符,如一元加号或一元减号,实际上返回的是整数。
++
运算符不改变类型
整型字面量为整型。
byte b = 1;
b = b + 1; // java: incompatible types: possible lossy conversion from int to byte