A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 慕容冰若 中级黑马   /  2014-3-20 20:33  /  995 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问各位 byte b = 1; b = b += 1;为什么运行是正确的啊???请详细解释一下

5 个回复

倒序浏览
隐式的类型转换,short char byte都可以转换成int类型
回复 使用道具 举报
b += 1 时,会自动进行强制类型转换,所以不需要加(byte)。
回复 使用道具 举报
b+=1时会进行隐式的类型转换,而b=b+1;则不行,需要强转
回复 使用道具 举报
本帖最后由 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是一种复合赋值方法,会自动将结果转成左操作数的类型。所以编译通过。



评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
b = b += 1,是隐式转换的,虚拟机自动帮你办到,即是int 数据类型转化成byte类型,再赋值给b.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马