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-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务