黑马程序员技术交流社区

标题: 数据类型转换问题 [打印本页]

作者: 慕容冰若    时间: 2014-3-20 20:33
标题: 数据类型转换问题
请问各位 byte b = 1; b = b += 1;为什么运行是正确的啊???请详细解释一下

作者: 青木郎    时间: 2014-3-20 20:34
隐式的类型转换,short char byte都可以转换成int类型
作者: 林林鸦    时间: 2014-3-20 20:37
b += 1 时,会自动进行强制类型转换,所以不需要加(byte)。
作者: Ranger    时间: 2014-3-20 20:47
b+=1时会进行隐式的类型转换,而b=b+1;则不行,需要强转
作者: 927233671    时间: 2014-3-20 20:52
本帖最后由 927233671 于 2014-3-20 21:21 编辑

如下
  1.               byte b=1;
  2.                 b=b+1;
复制代码

和这样
  1. byte b=1;
  2.                 b+=1;
复制代码
虽然操作是一样的,但是上面会报错,下面不会。因为b=b+1;左边是byte型的,右边运算后结果自动转成int型了。左右两边不一样。需要强转:b=(byte)(b+1);就不会错了。
下面b+=1是一种复合赋值方法,会自动将结果转成左操作数的类型。所以编译通过。




作者: MVP    时间: 2014-3-20 21:08
b = b += 1,是隐式转换的,虚拟机自动帮你办到,即是int 数据类型转化成byte类型,再赋值给b.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2