基本类型 加减运算 类型转换问题讨论
先来看下面的 代码:
?
public class Test{public static void main(String[] args){short i ;i = i + 1; //编译错误i += 1;//正确byte j = 1; //正确byte k = 2;byte l = j + k; //错误}}??
1、关于 i = i + 1: i + 1是int型,赋值给short 型变量需要做显示转换。
?
2、+= 、-= 属于复合赋值运算符(Compound Assignment Operator),他们是一种赋值运算符,虽然他们有算数的功能,但应该属于赋值运算符的范畴,而不属于算术运算符一类。
?
Java规定:复合赋值运算符中的转换都要编译器负责。
?
这就是为什么使用 += 、-=不需要显示转换的原因。
?
3、算术运算符(Arithmetic Operator)
Java中,所有整数的算术运算符都会产生int型的结果(除非有long参与其中)。因此?
?
byte l = j + k;
?虽然 j 、 k 都是byte型的,但根据上面“所有整数的算术运算都会产生int型的结果“的规则, j + k 结果是int型。这样将int赋值给byte 就需要强制转换。
?
?
?
?
?
?
?
?
david.wang2011-03-09