360内推笔试-java

byte b1 = 1, b2 = 2, b3, b6;
final byte b4 = 4, b5 = 5;
b6 = b4 +b5;
b3 = b1 + b2;
System.out.println(b6+b3);
答案是 b3 = b1 + b2;编译错误。

求解释
全部评论
Java里面,byte short char等基础类型都转换成int进行计算。 因此,b3 = b1 + b2 中,b1+b2得到了一个int的值所以需要强制转换 b3 = (byte)b1 + b2; ——个人见解,请大神批评
点赞
送花
回复
分享
发布于 2015-08-12 16:02
这是编译器层面上的优化。首先确实是转换成int类型进行运算的。对于常量是编译时检查并且计算,而变量则是运行时计算的。所以对于变量需要进行强制类型转换以保证类型安全。
点赞
送花
回复
分享
发布于 2015-08-12 18:25
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务