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-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务