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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张慧 中级黑马   /  2013-8-28 17:52  /  1821 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short a=3;  a+=4;
//a=a+4;
  这里如果是采用标红的那段代码时,在编译时程序就会报错。这个原因和:
  byte x=3,y=5;
  byte sum;
  sum = x +y;
  这里编译时出的错原因是一样的道理,因为在赋值的过程中还有不确定的变量,所以有可能会出现因为数据超出值的范围来造成精度的问题。但是上面的赋值运算a+=4它其实是在底层已经做了自动转换了,即a+=4等效为a=(short)(a+4).
(注意:如果是int类型的运算,即使在赋值时出现不确定的值也是不会出错的,因为运算的默认类型是int类型,所以即使越界了,说明符号位就为1,那么所得值就是二进制的数值为取反加1,再带上符号位,例如:
      int x=Integer.MAX_VALUE;
      int y=x+1;
      System.out.println(y);//y=-2147483648.
)

像这种细节问题,之前自己从来是不在意的,可以看了视频后,感觉获益良多啊。看来基础的东西还是要巩固的越扎实越好。

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 很给力!有收获什么都OK

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马