黑马程序员技术交流社区
标题:
面试题
[打印本页]
作者:
阳光下的枫叶
时间:
2015-12-12 00:29
标题:
面试题
面试题 B:
* byte b = 10;
* b++;
* b = b + 1;
* 问哪句会报错,为什么
作者:
Mr.zhao
时间:
2015-12-12 10:59
b = b + 1;报错,byte参加运算会提升为int重新赋值报错,b++含有隐式的强制转换不会报错
作者:
duluhuang
时间:
2015-12-12 11:27
当然是第三句拉
作者:
ninety_奶挺
时间:
2015-12-12 19:31
b = b + 1;会报错,因为计算b+1时会自动将b从byte提升为int,其计算结果还是int型,将int型的结果赋值给byte型肯定会提示可能会损失精度。而b++;相当于b=(byte)(b+1);其隐含了一个强制类型转换,所以没有问题。
作者:
Jerson_ZF
时间:
2015-12-12 20:01
b = b+1会报错。因为1是int类型的,会将表达式值提升为int类型,而b本身是byte类型,会出现类型转换错误
作者:
zhangdazhi186
时间:
2015-12-12 20:01
楼上都写的挺清楚的
作者:
王晓亮
时间:
2015-12-12 20:34
!!!!!!
作者:
Rocky_zhang
时间:
2015-12-12 20:55
高手在民间
作者:
hyl
时间:
2015-12-12 21:27
b=b+1,会报错。因为b+1会自动类型提升为int型,但b为byte类型,会超出范围。
而b++,实际是b=(byte)(b+1)内部包含了强制类型转换。
作者:
18045621320
时间:
2015-12-12 21:40
厉害
作者:
lvhongli
时间:
2015-12-12 21:56
最后一句啊
作者:
songjianzaina
时间:
2015-12-12 22:01
楼上讲得很清楚
作者:
我住隔壁我姓王
时间:
2015-12-12 22:12
当然是b = b + 1了
作者:
a54267490
时间:
2015-12-12 22:19
小类型的可以直接赋值给大类型的,反过来就不行
作者:
LSD-ZWH
时间:
2015-12-12 22:22
路过,过来瞅瞅,第三行错了!
作者:
唐洪超
时间:
2015-12-13 00:04
b=b+1报错。编译时,因改写成b=b++
作者:
zcbcba123
时间:
2015-12-13 00:13
第三句,
作者:
hrfhwy
时间:
2015-12-13 20:05
最后一句,因为1是int型,b被提升了
作者:
xiaobei56
时间:
2015-12-13 20:32
当出现 byte short int整数类型的变量时,java默认是 int类型(即:byte类型的变量,放在等号后面,java由于不知道你的变量值是多少,会默认为int类型)
当出现 float double浮点类型变量的时候,java默认是double类型
作者:
kellysunny
时间:
2015-12-13 20:44
高手,学习了
作者:
jacklove
时间:
2015-12-13 21:02
第三句 会报错 . 因为byte 和 int(也就是数字1啦)做运算时 , 会自动提升为Int类型
作者:
牛德阳
时间:
2015-12-13 22:38
最后一句啊
作者:
队长别开枪是我
时间:
2015-12-13 23:42
最后一句会报错,需要int,找到byte,第二句++是一个运算符,不会发生类型转换,第三句因为java的常量优化机制会把右边的自动提升为int类型,所以会报错.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2