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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阳光下的枫叶 中级黑马   /  2015-12-12 00:29  /  1658 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面试题 B:

    * byte b = 10;

    * b++;

    * b = b + 1;

    * 问哪句会报错,为什么

22 个回复

倒序浏览
b = b + 1;报错,byte参加运算会提升为int重新赋值报错,b++含有隐式的强制转换不会报错
回复 使用道具 举报
当然是第三句拉
回复 使用道具 举报
b = b + 1;会报错,因为计算b+1时会自动将b从byte提升为int,其计算结果还是int型,将int型的结果赋值给byte型肯定会提示可能会损失精度。而b++;相当于b=(byte)(b+1);其隐含了一个强制类型转换,所以没有问题。
回复 使用道具 举报
b = b+1会报错。因为1是int类型的,会将表达式值提升为int类型,而b本身是byte类型,会出现类型转换错误
回复 使用道具 举报
楼上都写的挺清楚的
回复 使用道具 举报
!!!!!!
回复 使用道具 举报
高手在民间
回复 使用道具 举报
hyl 中级黑马 2015-12-12 21:27:36
9#
b=b+1,会报错。因为b+1会自动类型提升为int型,但b为byte类型,会超出范围。
而b++,实际是b=(byte)(b+1)内部包含了强制类型转换。
回复 使用道具 举报
厉害
回复 使用道具 举报
最后一句啊  
回复 使用道具 举报
楼上讲得很清楚
回复 使用道具 举报
当然是b = b + 1了
回复 使用道具 举报
小类型的可以直接赋值给大类型的,反过来就不行
回复 使用道具 举报
路过,过来瞅瞅,第三行错了!
回复 使用道具 举报
b=b+1报错。编译时,因改写成b=b++
回复 使用道具 举报
第三句,
回复 使用道具 举报
hrfhwy 中级黑马 2015-12-13 20:05:07
18#
最后一句,因为1是int型,b被提升了
回复 使用道具 举报
当出现 byte  short int整数类型的变量时,java默认是 int类型(即:byte类型的变量,放在等号后面,java由于不知道你的变量值是多少,会默认为int类型)
当出现 float double浮点类型变量的时候,java默认是double类型
回复 使用道具 举报
高手,学习了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马