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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁秋瑜 中级黑马   /  2013-5-28 23:56  /  1310 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

7 个回复

倒序浏览
b=3+4,是编译出问题的,3,4是int型的,而b 是byte型,需要强转

点评

b=3+4;这句语句是没有错误的。  发表于 2013-5-29 10:28

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报

b=3+4;编译不会通过,3和4都是int型的,要强转。b=(byte)(3+4);

点评

b=3+4;编译没问题的,这段程序的问题是b=b1+b2;  发表于 2013-5-29 10:30

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
---------- javac ----------
Test1.java:6: 错误: 可能损失精度
                b=b1+b2;
                    ^
  需要: byte
  找到:    int
1 个错误

输出完成 (耗时 1 秒) - 正常终止
其实是b = (byte)b1+b2

而b = 3+4,编译是可以通过的

评分

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

查看全部评分

回复 使用道具 举报
大家可以编译下,我编译了下,虽然是个小问题
回复 使用道具 举报
b=b1+b2编译出错啊,因为你定义的b是byte类型,b1和b2是一个变量你给他们赋值是3和4所以java虚拟机会把b1和b2的类型提升为int型,所以你要做一个动作那就是传说中的b=(byte)(b1+b2);
b=3+4是可以通过的,因为你上面已经指定byte b1=3,b2=4
回复 使用道具 举报
风爽 中级黑马 2013-5-29 12:48:21
7#
风爽 发表于 2013-5-29 00:06
b=3+4;编译不会通过,3和4都是int型的,要强转。b=(byte)(3+4);

哦,看错了
回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马