黑马程序员技术交流社区
标题:
类型提升问题
[打印本页]
作者:
王军行
时间:
2014-3-19 00:00
标题:
类型提升问题
本帖最后由 王军行 于 2014-3-20 14:42 编辑
class VariableDemo3
{
public static void main(String[] args)
{
byte b1 = 3;
byte b2 = 4;
byte b3 = 3 + 4;
byte b4 = b1 + b2;
System.out.println("b3:"+b3);
System.out.println("b4:"+b4);
}
}
有问题。
b3=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。
b4=b1+b2不可以为什么?有解释说是两个byte变量和可能超出范围,但是为什么两个int变量之和不是非要用long型来接收呢???
作者:
liushui12344
时间:
2014-3-19 00:10
b1和b2均为变量,而运行byte=b1+b2时, 会先在语法上判断,因为变量的值不确定,会默认为int型,你可以把b4的数据类型定义为int就可以解决问题,或者强制转换也OK
作者:
❤゛Mr._Sun╮
时间:
2014-3-19 13:44
类型转换错了,虽然b1,b2定义为了byte类型,但是b4运算的时候,b1+b2调用的是3+4,运算结果的类型为整数型数据的默认类型,为int ,而定义的b4为byte,出现了两种数据类型不一。精度高的转精度低的,会发生丢失精度,改成byte b4 =byte(b1+b2);就可以了,将结果类型进行强制转换 希望对你有用哦
作者:
戒爱
时间:
2014-3-19 13:51
int b4 = b1 + b2;
b1、b2是不是都是变量,既然是变量那么他们的取值就在[Min, Max]之间,带着不确定性
对于b4它的最大值就是Max,要是b1+b2 < Max,这个时候没有问题,要是b4 > b1 + b2是不是就挂了
作者:
透过生活
时间:
2014-3-19 14:37
类型提升。只能是下级向上级提升。
byte --> short---> int ---> long
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2