肥宅钓鱼网
当前位置: 首页 钓鱼百科

if语句执行后else if还执行吗(你敢信if语句执行完)

时间:2023-08-09 作者: 小编 阅读量: 6 栏目名: 钓鱼百科

没错,上述的程序在本质上,main方法执行了两次。.equals这段代码是什么意思呢?首先,这段代码再次创建了一个Test类的对象实例,并在代码块中调用了Test类的main()方法,此时,由于Test类的对象实例不为空,所以,equals会返回false。此时,再次执行print()方法时,传递的flag为false,执行了else语句的逻辑。

从计算机底层原理来说,Java语句中的 if 指令和 else 指令分属于两个不同的逻辑分支,在同一段代码中,只要执行了if语句就不会执行else语句。所以,这个面试题的考点并不是让你从计算机底层原理的角度去分析问题。既然不能从计算机底层原理去分析问题,那我们需要从哪里入手分析呢?

没错,当然是从我们写的程序入手了!那么,问题来了,我们自己写的程序貌似也没有出现过执行完if语句后再执行else语句的情况呀!!别急,咱们继续往下看。

实现程序

我们先来看一段代码,如下所示。

publicclassTest{publicstaticvoidmain(String[]args){newTest().print(args==null||newTest(){{Test.main(null);}}.equals(null));}publicvoidprint(booleanflag){if(flag){System.out.println("我是if语句的分支");}else{System.out.println("我是else语句的分支");}}}

在你的IDE中运行下这段程序,没错,输出结果如下所示。

我是if语句的分支我是else语句的分支

我去,竟然真的同时执行了if语句和else语句,这是怎么回事呢?

代码分析

我们来看这段代码反编译后的结果,如下所示。

publicclassTest{publicTest(){}publicstaticvoidmain(String[]args){(newTest()).print(args==null||(newTest(){{Test.main((String[])null);}}).equals((Object)null));}publicvoidprint(booleanflag){if(flag){System.out.println("我是if语句的分支");}else{System.out.println("我是else语句的分支");}}}

看到这里,有木有一种恍然大悟的感觉呢?没错,上述的程序在本质上,main方法执行了两次。为什么会是执行了两次呢?原因就在main方法中调用print()方法时,传递的参数上。所以,我们先来看看调用print()方法传递的参数,如下所示。

args==null||(newTest(){{Test.main((String[])null);}}).equals((Object)null)

可以看到,调用print()方法传递的参数中,args == null为true,执行print()方法的if语句,这点不难理解。接下来就是要重点理解下面的代码片段了。

(newTest(){{Test.main((String[])null);}}).equals((Object)null)

这段代码是什么意思呢?首先,这段代码再次创建了一个Test类的对象实例,并在代码块中调用了Test类的main()方法,此时,由于Test类的对象实例不为空,所以,equals((Object)null)会返回false。此时,再次执行print()方法时,传递的flag为false,执行了else语句的逻辑。

是不是很神奇呢?所以,从现在开始,你要转变你的观念,这告诉我们:任何权威都不是绝对的,你要做的就是要敢于挑战权威,指出他们不对的地方!

    推荐阅读
  • 太原老年人养老机构(太原市老年公寓养老服务收费标准公布)

    太原老年人养老机构1月7日消息,市发改委、市民政局批复太原市老年公寓床位费和护理费标准。为了促进我市养老服务业健康发展,规范养老服务收费行为,市发改委、市民政局按照非营利原则,结合成本监审结论,考虑群众承受能力和市场供需状况等因素,批复太原市老年公寓床位费和护理费标准。床位费:1300元/床·月。上述收费标准为最高收费标准,下浮不限。住宿时间未满一个月的,按实际住宿天数收取费用。

  • 盘点与奥斯卡擦肩而过的明星(奥斯卡与画饼大厂)

    第93届奥斯卡得奖结果昨天公布了。《前程似锦的女孩》是芬内尔个人第一部故事长片,由其自编自导,获得了本次奥斯卡最佳导演提名,并成功拿下最佳原创剧本奖项。该片自推出以来,已经获得无数奖项。目前定于2022年1月发行。赵喜娜,这位这位前WWE冠军,在剧中仍会以血腥的反英雄身份出现,似乎这部剧集仍然是R级。仅仅上映几天后,《真人快打》就正式成为在遭受疫情之后票房最高的R级电影。

  • 铝锅怎么去除污垢(去除铝锅污垢方法)

    碱是生活中常见的一种东西,我们先把碱放在水中进行稀释,然后使用干净的抹布进行擦拭,最后用清水冲洗干净即可。铝锅随着使用时间的变长,铝锅的表面很容易形成黑垢。这种方式是比较好用的,除此之外,使用食醋等酸性物质进行处理,也有着这样的效果。需要注意的是,使用铝锅时,不能用来盛放酸性、碱性或者是腌制的食品,因为很容易破坏锅体表面的保护膜。

  • 战国策20个经典寓言故事(战国策小故事不怕)

    是专门替齐大打人,抢地盘的武将。按理说,邹忌和田忌二人明明是齐大的左膀右臂,贤臣良将,本应同心戮力报齐王知遇之恩。田忌这小子不但没成为革命烈士,反而成了战斗英雄。齐威王一听田忌要夺自己的王位、霸占自己的女人,勃然大怒,立刻发出A级逮捕令,全国通缉田忌。田忌明知是邹忌这货在背后陷害自己,可自己现在又百口莫辩,权衡之后,决定三十六计,保命要紧,连夜逃亡楚国去了。同时还要预备方案以防超出预料。

  • 茶的说说心情短语(励志语录跟茶有关)

    茶的说说心情短语茶似树针叶,待沸水冲泡,只见热气绕碗边转了一圈,然后自碗中心升起,约莫二尺来高时,又在空中转一圆圈,变成一朵白色的芙蓉花,少顷,白芙蓉又慢慢上升化成一团云雾,最后散成一缕热气飘荡开来。铁观音是乌龙茶的极品,其品质特征是:茶条郑曲,肥壮圆结,沉重匀整,色泽砂绿,整体形状似晴蜓头,螺旋体,青蛙腿。这只白鹤对明宗点了三下头,便朝蓝天翩翩飞去了。

  • 小学常见叠词大全(小学语文叠词归类)

    下面希望有你要的答案,我们一起来看看吧!小学常见叠词大全叠词是汉语的一种特殊词汇现象,使用非常普遍。汉语的名词、数词、量词、形容词、副词、动词以及象声词都有重叠变化。

  • 鹿晗在劫难逃饰演角色介绍(在劫难逃介绍)

    鹿晗在劫难逃饰演角色介绍《在劫难逃》里鹿晗饰演赵彬彬。《在劫难逃》是由五百执导,王千源、鹿晗、齐溪、乔欣、吴越、张皓然主演的轻科幻悬疑剧。该剧讲述了刑警队长,遭遇女儿意外死亡,深受重创,混沌度日,却不料卷入了一起连环杀人案中,而这似乎也与女儿的意外相关。

  • 月经期可以运动减肥吗 月经期可以做运动减肥吗

    运动减肥被称为是最有效的减肥方式,但是经期女生的身体处于一个比较脆弱的阶段,那么经期想要运动减肥又该怎么办呢?月经期可以运动减肥吗经期可以通过运动来进行减肥。经期做什么运动减肥效果好1、走路走路是最简单也是最容易实现的运动减肥方式,每天慢步三十分钟左右对于减肥有一定的效果,这种方式在女性生理期也是可以进行的而且对女性的身体没有伤害,每天散步还能改善人的心情,使人心情放松使人愉悦起来。

  • 石油都有哪些用处(关于石油用途介绍)

    石油都有哪些用处燃油,这个应该没有悬念,而且消耗了大部分的石油。72%的石油用于制成各种燃油:汽车上的柴油、汽油,飞机、轮船等交通工具使用的燃油。全球有铺装路面的公路总长为1700多万公里,可以想象消耗了多少沥青!衣服,我们从衣服标签看到的涤纶、腈纶、锦纶等面料,都是由石油生产的合成纤维。纺织所使用的纤维中,化学纤维的比重接近3/4,天然纤维占比仅有1/4,而90%以上的化学纤维产品依赖于石油。

  • 印刷要不要平面设计基础(平面设计常用尺寸)

    内页157或128克铜版纸或哑粉纸,4C4C印刷,骑马钉。页数较多时可用锁线胶装。插页则为正规尺寸210X285mm,其它工艺与彩页相同。收缩自如,携带方便,移动灵活,很受欢迎。可有效的宣传企业和产品形象,属流动性厂告,设计上应体现行业特征并具有时代潮流。所有文字均应转化为矢量。但是CD-R印刷的最终目标都是无限地接近您提供的纸样。标准的光盘分为CD-ROM和DVD-ROM两种。其尺寸都是全球统一的尺寸。