byte b = 1+1;
这个是可以通过的,首先类型已经定义为了byte;而后面的运算没有变量参与,都是常量参与;
那么他们的运算只考虑在不在byte的范围内,比如你写成byte b =127+1;这个就会超出范围;
byte b = 1; b = b + 1;(可能你疑惑的是已经定义了b是byte类型为什么还变为int类型)
在java中,对char, byte和short类型的字符串进行数学算法操作,比如+,-,>>位移操作,都会引发
自动类型提升,结果将是int类型, b + 1的结果就是int, 要将int的值赋给byte就必须进行类型强制转换。
最后 关于类型的自动提升,java定义若干适用于表达式的类型提升规则:
第一,所有的byte型、short型和char型的值将被提升到int型;
第二,如果一个操作数是long型,计算结果就是long型;
第三,如果一个操作数是float型,计算结果就是float型;
第四,如果一个操作数是double型,计算结果就是double型。 |