黑马程序员技术交流社区
标题:
下面代码哪里错了? 好简单的代码..
[打印本页]
作者:
n_Nie1991
时间:
2016-1-16 23:29
标题:
下面代码哪里错了? 好简单的代码..
public static void main(String [] args){
byte b = 15;
b++;
b = b + 1;
System.out.println(b);
}
作者:
qt520
时间:
2016-1-17 09:16
class Demo
{
public static void main(String[] args)
{
byte b = 15;
b++;
b = (byte)(b + 1);
System.out.println(b);
}
}
复制代码
byte类在运算时会变为int类,a为byte类
作者:
黑色皮肤的马
时间:
2016-1-17 10:07
b = b + 1;报错,运算的时候,byte 类型的 b 提升为 int 类型,然后和 int 类型的1相加,结果还是 int 类型,不能赋值给 byte 类型。应该强制转换 b = (byte) (b + 1);b++;不会报错是因为++运算符是隐含这强制类型转换的,也就是说,b++ 就相当于 b = (byte) (b + 1);
作者:
hi丶bo
时间:
2016-1-17 12:37
要强转一下 不然会损失精度,byte类型提升为int,b+1前面(byte)b+1就不会啦,这个叫做强制转换
作者:
付宇_GXie7
时间:
2016-1-18 23:03
b = b + 1写错了,运算会自动提升成int型,把int型的结果赋给byte型变量会提示损失精度.....
作者:
西葫芦虾仁
时间:
2016-1-18 23:51
1默认是int型的,你把他和byte型的相加赋值给byte型,肯定损失精度啊
作者:
fagug
时间:
2016-1-19 09:52
你定义的变量b是byte型,b = b + 1;这行代码加的1默认是int行,则运算后的结果变量b被自动上升为int型,此时与之前的初始化类型冲突,byte型内存空间里放不下int型数据,程序错误,改为 b=(byte)(b+1);
作者:
hi丶bo
时间:
2016-1-19 15:09
byte类型的b++会提升为int类型,需要强转b=(byte)b+1,不然会损失精度
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2