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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

面试题 B:

    * byte b = 10;

    * b++;

    * b = b + 1;

    * 问哪句会报错,为什么

22 个回复

正序浏览
最后一句会报错,需要int,找到byte,第二句++是一个运算符,不会发生类型转换,第三句因为java的常量优化机制会把右边的自动提升为int类型,所以会报错.
回复 使用道具 举报
最后一句啊
回复 使用道具 举报
第三句 会报错 . 因为byte 和 int(也就是数字1啦)做运算时 , 会自动提升为Int类型
回复 使用道具 举报
高手,学习了
回复 使用道具 举报
当出现 byte  short int整数类型的变量时,java默认是 int类型(即:byte类型的变量,放在等号后面,java由于不知道你的变量值是多少,会默认为int类型)
当出现 float double浮点类型变量的时候,java默认是double类型
回复 使用道具 举报
hrfhwy 中级黑马 2015-12-13 20:05:07
18#
最后一句,因为1是int型,b被提升了
回复 使用道具 举报
第三句,
回复 使用道具 举报
b=b+1报错。编译时,因改写成b=b++
回复 使用道具 举报
路过,过来瞅瞅,第三行错了!
回复 使用道具 举报
小类型的可以直接赋值给大类型的,反过来就不行
回复 使用道具 举报
当然是b = b + 1了
回复 使用道具 举报
楼上讲得很清楚
回复 使用道具 举报
最后一句啊  
回复 使用道具 举报
厉害
回复 使用道具 举报
hyl 中级黑马 2015-12-12 21:27:36
9#
b=b+1,会报错。因为b+1会自动类型提升为int型,但b为byte类型,会超出范围。
而b++,实际是b=(byte)(b+1)内部包含了强制类型转换。
回复 使用道具 举报
高手在民间
回复 使用道具 举报
!!!!!!
回复 使用道具 举报
楼上都写的挺清楚的
回复 使用道具 举报
b = b+1会报错。因为1是int类型的,会将表达式值提升为int类型,而b本身是byte类型,会出现类型转换错误
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马