黑马程序员技术交流社区

标题: 面试题: [打印本页]

作者: 曾乐祥    时间: 2016-6-23 08:07
标题: 面试题:
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
答:在byte b3 = b1 + b2;报错。从两方面去回答这个题。Abytebyte(或shortchar)进行运算时,会自动提升为int类型,两个int类型相加的结果也是int类型;
Bb1b2是两个变量,变量里面存储的值都是变化的,相加有可能会超出byte类型的取值范围,所以程序在运行时JVM是无法判断里面的值的。
byte b4 = 3 + 4;编译成功。因为34都是常量,java有常量优化机制,编译时会先将3+4的值计算出来,并且判断7是否在byte的取值范围内(-128127),如果在范围内则会将7赋值给b4


作者: 可可米修    时间: 2016-6-23 09:49
很好 是这样的
作者: naonao1027    时间: 2016-6-23 10:40
又巩固了一下~~
作者: guyue    时间: 2016-6-23 13:09
很好,可以知道自己的不足
作者: suming    时间: 2016-6-23 13:20
谢谢 分享 我 得多看
作者: 郎行天下    时间: 2016-6-24 11:10
这是基础班的面试题?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2