读书人

基本类型 加减运算 类型转换有关问题讨

发布时间: 2012-12-19 14:13:15 作者: rapoo

基本类型 加减运算 类型转换问题讨论

先来看下面的 代码:

?

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

读书人网 >编程

热点推荐