显式转换byte d =(byte) ((byte)a+b)不等于byte d =(byte)(a+b)?
发表在Java视频课程答疑 2017-05-19
是否精华
版块置顶:

         

public class Num {


public static void main(String[] args) {

// TODO 自动生成的方法存根

          byte a = 126;

          byte b = 5;

                

          byte c = (byte) 131           ;

          byte d =(byte) ((byte)a+b);

         //byte d =(byte)(a+b)错误的显式转换

          System.out.println(c);

          System.out.println(d);

          

}


}



问题:a+b的值为131 超出了byte的范围,现在用显式转换

byte d=(byta)131 或者 

byte d =(byte) ((byte)a+b)

而 byte d =(byte)(a+b) 报错是为什么?

复习时候折腾下看看,如果显式转换的不是一个超出byte的具体数,而是一个两个数值的和(和超出byte的表达范围),该怎么写表达式byte d =(byte) ((byte)a+b)加粗部分的含义是什么?

2017-05-19 14:07:25编辑
分享到:
精彩评论 2
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-05-19
沙发

(1)byte d =(byte)(a+b) 报错原因,读者重点看下图中的注释。

无标题.png

(2)因为变量a的值没有超过byte的最大值,所以表达式(byte)a没有任何作用。但是(byte)a+b返回的数据类型为int型,而等号左边的d是byte型,所以必须要强制类型转换。

chenbaojunjava
学分:58 LV3
2017-05-20
板凳

确实如此,理解了。

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照