黑马程序员技术交流社区

标题: 这段代码 求解释 [打印本页]

作者: 幸福与我零距离    时间: 2015-7-9 16:29
标题: 这段代码 求解释
boolean b=true;
                if(b=false)
                {
                        System.out.println("a");
                }
                else if(b)
                {
                        System.out.println("b");       
                }
                else if(!b)
                {
                        System.out.println("c");
                }
                else
                {
                        System.out.println("d");
                }

作者: 拾起落叶    时间: 2015-7-9 16:48
因为第一个if()语句里给b赋予了值,所以当第二个else if执行时,b的值已经是false,所以第二句不会执行
作者: guoningyan    时间: 2015-7-9 18:24
楼上正解,输出结果为c
作者: rose_xiaomei    时间: 2015-7-9 19:51
C 一楼正解
作者: wx_HWRW5aF7    时间: 2015-7-9 20:48
哥这是第三天作业
作者: 钟志军zzj    时间: 2015-7-9 21:16
结果是c楼上说的
作者: CLTDEZHUCE    时间: 2015-7-9 21:21
boolean b=true;
                if(b=false)//false赋值给b,b就代表false,就只能走else
                {
                        System.out.println("a");
                }
                else if(b)
                {
                        System.out.println("b");        
                }
                else if(!b)//!b就是!false,就是ture,就走{}内的语句。输出c,下面不在执行
                {
                        System.out.println("c");
                }
                else
                {
                        System.out.println("d");
                }
作者: 等你的季节-夏天    时间: 2015-7-9 21:26
谢谢分享
作者: 陈建民1    时间: 2015-7-9 21:32
。。。好吧,我懂了
作者: 木头人之死    时间: 2015-7-9 21:33
二楼正解
作者: WElife    时间: 2015-7-9 21:39
选b。。。。。不用解释了。。。
作者: 孟卫严    时间: 2015-7-9 21:48
选输出“c”这个答案,输出“true”是错的
作者: longbao    时间: 2015-7-9 21:55
结果是:b
作者: wengjialiang    时间: 2015-7-9 22:07
选b啊啊。。。。。今天的测试题
作者: 形而上孤独    时间: 2015-7-9 22:24
为什么是b,哥们
作者: 人造番茄    时间: 2015-7-10 07:14
二楼说的很有道理
作者: fantianfei    时间: 2015-7-10 07:50
C,楼上很多大神
作者: 牵着蜗牛去逛街    时间: 2015-7-10 09:38
主要是要注意=和==的区别,一楼说的对。。
作者: zhwfa1991    时间: 2015-7-10 09:58
结果是C啊,=是赋值,==才是判断左右是否相等呢
作者: YongBao_Summer    时间: 2015-7-10 10:01
C。答案是、
作者: hnyzhlq    时间: 2015-7-10 10:22
我居然把=看成==,面壁去
作者: 乔栋    时间: 2015-7-10 11:08
c............
作者: 乔栋    时间: 2015-7-10 11:09
wengjialiang 发表于 2015-7-9 22:07
选b啊啊。。。。。今天的测试题

复制代码运行下先。。。。。。。。。。。。。。。
作者: 炎舞霜冬    时间: 2015-7-10 11:16
我也被这道题给坑了
作者: 慕容旺财    时间: 2015-7-10 11:39
学习了 补充下 赋值语句的结果就是赋的那个值
作者: 乔栋    时间: 2015-7-10 15:31
WElife 发表于 2015-7-9 21:39
选b。。。。。不用解释了。。。

。。。。。误解
作者: maizi1912    时间: 2015-7-10 19:27
我怎么 觉得是b啊  
作者: 何鹏程    时间: 2015-7-10 21:19
又涨知识了。
作者: 燃烧的灵魂    时间: 2015-7-10 21:26
楼上正解
作者: 发抖的_DtYJA    时间: 2015-7-10 21:54
楼上正解,输出结果为c
作者: e咕噜    时间: 2015-7-10 21:57
选c,当条件为true时,才执行大括号中的内容,而第一个if中为赋值,将false赋值给b,也就是b为false,所以要往下执行else,知道条件为true即!b时才执行{}
作者: 菩提本无树    时间: 2015-7-10 22:04
第三天的内容
作者: 1木头1    时间: 2015-7-10 22:12
支持二楼
作者: 冲吧,小怪兽    时间: 2015-8-11 22:51
输出c,b在上面已经被赋值了

作者: CharnLau    时间: 2015-8-11 23:05
二楼已经给了答案了!
作者: 径直上漠北    时间: 2015-8-12 10:29
自己敲了一遍,仔细体会了一下运行顺序,应该是if(b=false)给b重新赋了一个值,但由于条件为假,下面的"a"无法打印,然后到else if(b)时,没有重新赋值,就保留b=false的值,所以"b"同样不打印,然后到else if(!b)时,取反相当于重新赋了一个值,b变为真,所以"c"打印,然后就跳出.
作者: 叶顺达    时间: 2015-8-12 11:04
我想说 这个题目有点坑
作者: 李文思    时间: 2015-8-12 11:13
不仔细看,还真的会被忽悠了。确实是C啊。
作者: henghenghalala    时间: 2015-8-12 11:14
咦,这个题有意思,唬得我一愣一愣的
作者: wzh4488    时间: 2015-8-12 21:42
因为第一个if中是赋值语句,所以b的值为false,选C




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