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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

15黑马币
byte a=1; byte b=2; byte c=a+b出错

最佳答案

查看完整内容

因为 a 和 b 变量会在计算时自动转换成int类型 所以应该在前面加一个强制转换char(a+b)

14 个回复

倒序浏览
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b)

点评

说的好,然而这确实是java比较蛋疼的地方。稍微不注意就错误了。  发表于 2015-9-21 12:43

评分

参与人数 1黑马币 +3 收起 理由
辉Se天空 + 3 赞一个!

查看全部评分

回复 使用道具 举报
hui18927318227 发表于 2015-9-20 20:17
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b) ...

谢谢,清楚了!!!
回复 使用道具 举报
这是个数据类型的问题
a+b被当做int所以需要强转

        public static void main(String[] args)
    {
        byte a = 1;
        byte b=2;
        byte c=a;
        c+=b;
        System.out.print(c);
   }

写成上面这样就是不会出错。
        c+=b;
        c= a+b;
是不同的
前者数据类型是不变的,后面数据类型是int
感觉这样会比较好。

评分

参与人数 1黑马币 +1 收起 理由
辉Se天空 + 1 很给力!

查看全部评分

回复 使用道具 举报
hui18927318227 发表于 2015-9-20 20:17
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b) ...

学习了,谢谢
回复 使用道具 举报
涉及到了类型转换
回复 使用道具 举报
hepann 中级黑马 2015-9-21 07:58:25
7#
张见识 学习了
回复 使用道具 举报
学习了,
回复 使用道具 举报
年强 中级黑马 2015-9-21 19:59:38
9#
数据类型的转换遵循由低精度可以向高精度转,反之不行。byte与int精度不同,出错。做一个强转就行了
回复 使用道具 举报
说的都很好
回复 使用道具 举报
应该是编译器的事情吧,我觉得。
回复 使用道具 举报
已经定义成 byte  了,,是因为  +  作为运算符 只限定于int  中的原因吗??
回复 使用道具 举报
学习了,这个真的没注意过~
回复 使用道具 举报
a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马