这个问题一直没想通:
byte b1=3,b2=4,b;
b=b1+b2;
System.out.println(b);
b=3+4;
System.out.println(b);
结果是b=b1+b2提示损失精度,b= 3+4打印出7.
我在想第一句定义三个变量,都是byte型,既然b1,b2,b都是byte,那怎么第二句提示可能损失精度?
b=b1+b2;
^
需要: byte
找到: int
我把第二句改成b=(byte)(b1+b2);就能通过了,那就是说b1和b2还是int,它们的和也是int,但b是byte,需要在和前面加强制转换,是这样理解吗?
第二天的视频里面讲定义变量的时候说long和float定义初始值后面要加标识,比如long x = 4l;float y=3.5f;因为默认类型分别是int和double,那么说byte在定义初始值的时候也要在后面加标识?不然就会出现像第二句那样编译失败?那么加什么标识呢?
b=3+4;打印出来是7,既然第二句编译失败,说明b是byte,3和4都是int,其结果也是int,怎么能赋值给b?
|