A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.
                          int k ;       
                          if(true)
                          k=1;
                          else if (false)
                           k=2;
                           System.out.println(k);
2.
                         int i ;
                         int a =3;
                         if(a==3)
                        i=1;
                        else if (a==1)
                         {
                        i=3;
                        }

                System.out.println(i);
猜猜上面两个句子编译的结果分别是什么?为什么呢?

评分

参与人数 1黑马币 +2 收起 理由
xu921114 + 2 这问题问得有水准!!

查看全部评分

17 个回复

倒序浏览
要是超过5个伙伴回复,我就把见解发出来!,话说谁能告我直接发代码行?
回复 使用道具 举报
求大神解答 ~~~
回复 使用道具 举报
第一个1,第二个报错
回复 使用道具 举报
第一个是1,第二个报错!!这是为什呢?
回复 使用道具 举报
小乎乎 来自手机 中级黑马 2015-6-6 22:27:11
地板
难道是第一个输出k为1,第二个报错……木运行,大胆揣测勒
回复 使用道具 举报
还以为都报错。。
回复 使用道具 举报
想知道答案吗?{:2_42:}

因为回复超过5条后,就给黑马币了{:2_31:}
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-6 22:36:16
9#
第一个是1  因为if括号里的判断如果是true.后面的代码就会执行,现在直接定义true 当然会执行
第二个会报错,因为你这一大串代码想要运行 要么在类的一个方法中 要么在main方法在 但不管在哪,都属于方法中 也就是i a都属于局部变量,也就是说i必须要有初始化值,所以报错。。不知我分析的对吗?
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-6 22:38:24
10#
第一个i没赋值,但是不报错 是不是因为if永远为真 必执行?
回复 使用道具 举报
第一个是1,第二个报错,i没有初始化值。
回复 使用道具 举报
第一个1,第二个第一句就错了,局部变量必须赋初始值.
回复 使用道具 举报
一米阳光abc 发表于 2015-6-6 22:49
第一个是1,第二个报错,i没有初始化值。

和第一个的区别呢?
回复 使用道具 举报
小乎乎 来自手机 中级黑马 2015-6-6 23:06:35
14#
君子无醉 发表于 2015-6-6 22:36
第一个是1  因为if括号里的判断如果是true.后面的代码就会执行,现在直接定义true 当然会执行
第二个会报错 ...

分析很细,此处有掌声
回复 使用道具 举报
本帖最后由 qian0217wei 于 2015-6-6 23:10 编辑

第一个结果是1,因为if判断值为true直接执行语句,所以1赋值给k,所以打印结果是1;第二个编译会报错,提示未初始化变量,因为jvm在判断是,认为a可能即不满足1,有不满足3,这样打印i就会出现未初始化变量,
和第一题不一样在于,第一个要么true ,要么false ,jvm认为k肯定会被赋值就不会报错!
回复 使用道具 举报
小乎乎 来自手机 中级黑马 2015-6-6 23:07:59
16#
QQheima 发表于 2015-6-6 22:31
想知道答案吗?

因为回复超过5条后,就给黑马币了

所以,真的发黑马币麽
回复 使用道具 举报
第一个:编译器在判断这个语句时,会查看if和else if中是否有给k赋值,然后因为看到true就判断这个if else if 最后一定会有值,即k肯定会被初始化,因此编译通过;但第二个虽然逻辑上a==3为真,可是编译器编译时只检查语法错误,具体运算是要等编译通过后虚拟机去执行的,因此编译器在编译时不确保if else if中一定会有值,所以报错
回复 使用道具 举报
君子无醉 来自手机 中级黑马 2015-6-6 23:14:54
18#
小乎乎 发表于 2015-6-6 23:06
分析很细,此处有掌声

3Q~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马