1.请问该代码是否有误?
答:有误,之前说过byte在运算时会提升为int,所以是int a+b,c不能用byte
.
2.该如何修正代码?
.
答:我们可以将c的类型换成int
.
3.下列修正代码错在哪里?该如何正确修正?
答:这么转换毫无意义,因为a和b本来就是byte类型,而且这样转换,a和b还是会提升为int。
正确转换应该是先用括号提升a+b的优先级让它们先算,然后再强转(a+b)
4.下列代码是否有误?有误请说明原因
错误回答:有误,3和4是字面量,之前说过字面量默认类型是int,所以运算后结果还是int,大的给小的不能直接给,编译错误
引出:在回答这个问题之前,我们需要知道java存在“常量优化机制”
答:所以,在编译的时候,3和4已经相加成7了,真正的字节码文件是byte b=7; 不会有任何问题
posted @
2024-10-26 08:58
直実
阅读(
1)
评论()
编辑
收藏
举报