黑马程序员技术交流社区
标题:
提问
[打印本页]
作者:
性感不是骚
时间:
2016-4-4 09:29
标题:
提问
请问 byte a=4;
a++;
a=a+1;
system.out.println(a);
为什么会报错
作者:
菊花爆满山
时间:
2016-4-4 10:27
丢失精度
作者:
yaolv7
时间:
2016-4-4 10:34
1、a是个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值.
2、byte类型的变量在进行运算的时候,会自动类型提升为int类型,无法赋值给byte类型.
3、java有优化机制,这里你写的 a++ 会实现隐式转换,相当于 a = (byte)(a + 1);
作者:
马儿不吃草
时间:
2016-4-4 10:47
没有强制转换
作者:
253663946
时间:
2016-4-4 11:46
a = a + 1;这句话编译报错了,因为a是byte,1是int,两者相加的时候a会提升为int型,得出的的结果就是int型,int型赋值给byte型会损失精度,所以报错。改为a = (byte)(a +1);就可以通过了;
作者:
lixianglei
时间:
2016-4-5 10:55
精度丢失 a = (byte) a + 1;就行了
作者:
willsame
时间:
2016-4-5 14:18
5楼解释的很清楚了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2