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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wahaha 中级黑马   /  2013-2-27 20:36  /  2438 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏添 于 2013-2-28 19:55 编辑

     详见下面代码
byte a = 1;
byte b = 2;
byte c = a+b;
这段代码编译是不通过的,我找到了两种解释

1.来自于张孝祥教程的解释:所有位数低于int型的数运算结果都会自动提升为int型  ,
    所以a + b的结果不能赋值给 byte型的 c ;(个人理解,这么做可能是方便java的运算)

2.来自朋友的解释,java在编译阶段,a和b都没有赋值,  a+b的值可能超出byte范围,存在隐患,于是java虚拟机就让这段代码挂掉.(这java也太智能了吧..真替程序员着想..)\

朋友们,你们觉得到底是什么原因呢???

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

11 个回复

倒序浏览
求盆友进来说说编译失败的原因~~~
回复 使用道具 举报
谢洋 发表于 2013-2-28 01:28
拿到机上测了下,发现以下问题;
  byte a = 1;     //编译器检测一下int结果有没有越界,没有
  byte a1  ...

哥们,辛苦了...你用心了

你说的介些,俺们都晓得...俺也实验了N次
你木有说byte c  =  a + b ;编译不通过到底是因为啥...请表态哈...
请盆友们来点猛料,,力求简洁.
回复 使用道具 举报
哥们,辛苦了...你用心了

你说的介些,俺们都晓得...俺也实验了N次
你木有说byte c  =  a + b ;编译不通过到底是因为啥...请表态哈...
请盆友们来点猛料,,力求简洁.
回复 使用道具 举报
谢洋 发表于 2013-2-28 10:09
我语文学得不好,表达不行啊!
先明确一点,编译器是一行行的检查有没有错的,所以说它忘了之前做过的事( ...

木有疑问,我是想问,关于编译不通过的原因,哥们是同意我的第二条咯~~~呵呵~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马