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

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

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

没错,上述的程序在本质上,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语句的逻辑。

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

    推荐阅读
  • 梦见皮带断了什么预兆(梦见皮带断了寓意什么)

    下面希望有你要的答案,我们一起来看看吧!打算出门的人梦见皮带断了,建议等秋冬之季再行。准备考试的人梦见皮带断了,意味着成绩不理想,未能上榜。创业的人梦见皮带断了,代表经营不利,成长缓慢,亏损停止营业。

  • 来电狂响片段好看吗(来电狂响那些你看不到的细节剧情深度解析)

    期间贾迪误解白雪娇和前任的不清不楚,贾迪也成功的解决短信危机,在贾迪措手不及的时候,推销电话第三次打来,原来是贾迪出轨白雪娇的闺蜜,闺蜜已经怀孕。挂电话时女儿却意外透漏了,文伯和戴戴已经离婚的事实。马丽的角色是剧中一个说教性的角色,实际上并不讨喜,她承担了本片中大部分的“严肃”。四组主人公,吴小江夫妇,选择放下过去继续生活。贾迪选择不再说谎,承担责任。

  • 冬天释迦怎么快速变软(冬天释迦变软的方法)

    冬天释迦怎么快速变软高温催熟法:释迦果用报纸包一下,向报纸上喷一些水,然后存放在温度较高的地方,过两三天释迦果就会变软,成熟。乙烯气催熟法:可以把释迦果放在密闭的塑料帐篷或房间里,按容积0.1%~0.2%的乙烯气浓度充气。密闭1-2天后取出释迦果,2天-3天左右释迦果逐渐黄熟。

  • 梦见狗熊追我什么意思(梦见狗熊追我的意思)

    下面更多详细答案一起来看看吧!梦见狗熊追我什么意思准备考试的人梦见狗熊追我,意味着成绩理想,在录取边缘,宜多努力。创业的人梦见狗熊追我,代表进展缓慢、稍有得利。打算出门的人梦见狗熊追我,建议阻碍,延后出发。梦见熊,象征你事业上可能有障碍,梦中如果将熊杀死,表示你会克服工作中的障碍,取得理想的成绩。如果梦中的熊向你攻击,表示工作中的困难很难解决,同时你有可能会生病。

  • 2021广州银河烈士陵园重阳节扫墓须知一览

    重点服务日期间,全体党员干部参加服务一线加强疫情防控和业务引导工作,为市民提供暖心、便利的服务,解群众之难题。预约时须如实填写参加现场祭扫人员的姓名、身份证件号码等信息。使用智能设备有困难的老年人等特殊群体可进行现场预约。(二)严格落实常态化疫情防控措施银河革命公墓在园区入口设置常态化疫情防控检查站。按照疫情防控规定要求,参加现场祭扫须佩戴口罩、测温、二码联查。

  • 如何应对校园霸凌(正确应对)

    如何应对校园霸凌针对校园霸凌事件呢,建议首先父母在平时教育孩子的时候不要太过于软弱,面对别人的欺凌要勇敢地还击回去。所以在面对校园霸凌时不要一味的退让,有时勇敢的反击能够更好的解决问题。其次就是在孩子面对校园霸凌的时候,父母要积极的跟学校与老师沟通,让学校和老师来妥善地解决。最后就是要跟校园霸凌者的父母沟通。

  • 失眠无非三种原因3个经典助眠方(经常失眠难以入睡)

    虚症主要是血虚。正常情况下,心主血而藏神。没了火邪的扰乱,心神就会得到安宁。接下来,是珍珠母、牡蛎、龙骨,这三味药,都是一些矿物类药。同时,牡蛎还能治疗肝阳头痛。用牡蛎,不但能够助眠,还能防止肝阳上亢,抑制血压的升高。就是给心脏提供营养。最后是几味祛湿的药,如茯苓、车前子、泽泻等,这些药都是祛湿利水的。因为很多肝火,其实是藏在湿邪当中的,称之为湿热。

  • 一无所获是什么意思(词语一无所获是什么意思)

    以下内容希望对你有帮助!一无所获是什么意思一无所获,汉语成语,拼音是yīwúsuǒhuò,什么东西都没有得到。

  • 荣威属于什么档次(荣威属于什么档次车)

    回望2019年荣威品牌的销量状况,全年度的总销量为42万辆,对比上一年提高了4%;市场份额为2.1%,升高了11.5%。前五名各自为好意头、万里长城、北京长安、奇瑞汽车、及其比亚迪汽车。当然,这后面也与荣威致力于科学研究信息科技,深层发掘用户需求相关。融合品牌,荣威一直投身于中低档车型销售市场,销量考试成绩是令人满意的,但品牌高他人半级的优点显得更加弱。

  • 阿尔托的奥德赛翼装怎么用(使用方法介绍)

    跟着小编一起来看一看吧!阿尔托的奥德赛翼装怎么用阿尔托的奥德赛翼装使用方法:做花样织围巾,等到最长时获得翼状,点翼状图标就能飞,再点一次关闭。在飞行状态下,点击屏幕抬升飞行高度,长按为大回环。阿尔托的奥德赛翼装怎么获得:在商店里花费金币购买翼装。