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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹兆国 中级黑马   /  2014-6-11 23:54  /  1168 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 尹兆国 于 2014-6-13 01:35 编辑
  1.   byte b1=3,b2=4,b;
  2.   b=b1+b2;
  3.   b=3+4;
复制代码
b1、b2自动提升为int,然后相加,结果为int,再赋给byte,结果报错,因为java默认运行最大效率的数字类型是int ,其他类型的运算好像都没这个快,所以默认被转换成了int。  不知道我的理解是否正确



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 youngkay 于 2014-6-12 09:56 编辑

因为b1,b2是byte类型  所以相加不需要类型转换,3和4都是int类型  int类型相加 ,结果还是int类型,用byte类型接受,int类型不会自动转换为byte类型,所以报错,自动类型转换时从低往高转
回复 使用道具 举报
2楼回答错误了。变量型的赋值运算,byte,short.都会自动提升为int类型运算。所以你将int类型的结果赋值给byte类型的当然会报错了。至于b=3+4;这是一个简单的常量相加赋值。当然不会报错了。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
楼主应该理清概念,才能吃透语法,帮你总结一下,希望有帮助
1.
自动类型转换,也称隐式类型转
转换规则:
从存储范围小的类型到存储范围大的类型。
具体规则为:
byte→short(char)→int→long→float→double
2. 强制类型转换,也称显式类型转换
转换规则
从存储范围大的类型到存储范围小的类型。
具体规则为:
double→float→long→int→short(char)→byte
语法格式为:
(转换到的类型)需要转换的值
回复 使用道具 举报
这里的重点是变量赋值运算和常量赋值运算。以及类型的自动提升。。如果仅仅知道类型的自动提升。估计有的时候你认为你懂了。你却只是知道一半
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马