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

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务