Pat*_*ick 9 java operators short
我做了一点测试来操纵a short,我遇到了编译问题.以下代码编译:
short s = 1;
s += s;
Run Code Online (Sandbox Code Playgroud)
虽然这个没有:
short s = 1;
s = s + s; //Cannot convert from int to short
Run Code Online (Sandbox Code Playgroud)
我已经阅读过shorts自动升级int,但这两个代码有什么区别?
rge*_*man 17
你是对的,short被提升为ints.这在二元运算符的求值期间发生+,并且它被称为二进制数字提升.
但是,使用复合赋值运算符可以有效地擦除它+=. JLS第15.26.2节规定:
形式E1 OP = E2中的化合物,赋值表达式等价于E1 =(T)((E1)OP(E2)),其中T是E1的类型,不同的是E1只计算一次.
也就是说,它相当于回归short.