类型转换:面试题

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)  评论(0编辑  收藏  举报