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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jsfjb 中级黑马   /  2012-10-31 12:32  /  1184 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.                 byte a = 0;
  2.                 //a = (byte)(a+4);这句运行正常。木有问题。
  3.                 a = a + (byte)4;//这句有问题吗?猜猜!并说出原因。
  4.                 System.out.println(a);
复制代码
这个问题我感觉有点猥琐。大家一定要hold住!
这儿的   a = a + (byte)4;  这句是有问题的。但是我有疑惑,问什么这样转化就不行?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

6 个回复

倒序浏览
猜猜  这句话会报错吗?
  1. a +=  (byte)4;
复制代码
回复 使用道具 举报
猜猜  这句话会报错吗?
  1. a +=  (byte)4;
复制代码
回复 使用道具 举报
貌似因为那个+号
这样不用转换也不损失精度
a+=4;
回复 使用道具 举报
都彭韬 发表于 2012-10-31 12:36
猜猜  这句话会报错吗?

谢谢。
没有报错,
a = a+(byte)4; 与 a += (byte)4;
有什么区别?能从底层分析 一下么?
谢谢!
回复 使用道具 举报
a = (byte) (a + (byte)4);计算完的结果再进行下强制转换。a + (byte)4这个式子计算完编译器认为结果是  int  你把int赋值给byte,就出状况了
回复 使用道具 举报
jsfjb 发表于 2012-10-31 12:41
谢谢。
没有报错,
a = a+(byte)4; 与 a += (byte)4;

这个记得在一个帖子中回复过,前一个   先做加操作   再做赋值操作,所以会出错
第二个是直接对 a进行加 4  效率高,而且不涉及赋值,所以不会出错

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马