黑马程序员技术交流社区

标题: 下面代码哪里错了? 好简单的代码.. [打印本页]

作者: 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
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 byte b = 15;
  7.                 b++;
  8.                 b = (byte)(b + 1);
  9.                 System.out.println(b);
  10.         }
  11. }
复制代码


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