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

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

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

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

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

    推荐阅读
  • 微信短期封号辅助验证(微信团队严正提醒)

    微信方面表示,此类行为属于违规行为,“恶意为他人注册、解封微信帐号进行辅助验证”也属于违规行为。这是不法分子为了躲避微信安全打击衍生出的虚假诱导行为。对于此类行为,我们将予以严厉打击。对于明确违反上述规定的微信帐号,依据国家相关法律法规及《腾讯微信软件许可及服务协议》《微信个人帐号使用规范》,在核实用户投诉提交的证据后,我们将对恶意帐号进行封号或永久封号处理。

  • 顺德大良社保办事处最新地址(顺德区大良社保局地址)

    佛山市顺德区社会保险基金管理局大良办事处地址有变化!具体如下公告:关于佛山市顺德区社会保险基金管理局大良办事处搬迁办公场所的通告各有关单位、参保人:因工作需要,佛山市顺德区社会保险基金管理局大良办事处将于2022年3月28日起,搬迁至大良街道鉴海北路110号办公。

  • 技校都有什么专业适合女生(各自的特点是什么)

    学前教育很适合技校女生学,毕业以后可以当老师,女生的特点是温柔、心细,很适合跟孩子相处,而且女生当老师也不会太累另外,学前教育专业毕业不当幼师也可以从事园长、课程顾问、记者、销售等职位,现在小编就来说说关于技校都有什么专业适合女生?另外,学前教育专业毕业不当幼师也可以从事园长、课程顾问、记者、销售等职位。而美容及化妆专业则要深入系统的学习,只有把简单的东西学到极致才能在这个行业中脱颖而出。

  • 卡戴珊为什么要穿梦露礼服(爆金卡戴珊撑破了价值1000万梦露定制裙)

    一看就是被硬撑撑坏的,网友纷纷谴责金卡戴珊明明知道自己屁股大还是要硬挤,这下好了,彻底破坏成功。众所周知,这件手工制作的水晶裸色礼服是设计师JeanLouis为梦露量身打造的,裙子颜色只与她的肤色最为相配,最能展现出曼妙动人的身姿。可是现在金卡戴珊为博眼球、刷流量竟然撑破梦露礼服,真是啪啪打脸,外国网友吐槽也是在所难免。如有冒犯,提醒删除。

  • 南瓜红糖馒头如何做(南瓜红糖馒头做法)

    南瓜红糖馒头如何做南瓜去皮,微波炉加热3-5分钟至软,用叉子捣碎成南瓜泥,放凉备用。面粉500克,红糖40克,干酵母5克,混合均匀。待南瓜泥稍凉,加入180毫升牛奶,混合好后慢慢倒入面粉中,和成光滑面团。面团温暖处发酵至两倍大。蒸锅注水,铺屉布,上汽后,将馒头坯放入,大火蒸15分钟。馒头蒸好后,不要立刻揭锅,等五分钟再开锅盖,可以防止回缩。

  • 水果胡萝卜怎么吃(水果胡萝卜的做法)

    接下来我们就一起去研究一下吧!水果胡萝卜怎么吃原材料:猪排骨250克,苞米1根,水果胡萝卜5根,荸荠8个,姜片、食用盐各适当。猪排骨清洗,放进开水中焯烫,焯烫时放进3片姜片。苞米清洗,切条,水果胡萝卜切条,荸荠清洗预留。水烧开后,随后改文火煲2个钟,直到食物酥烂。依据自身的口感添加适量食用盐调料就可以。

  • 成都黄金城(成都黄金周)

    10月8日,成都市文广旅局发布的数据显示,据综合测算,2022年“国庆”假期成都市共接待游客1211万人次,恢复至上年同期的64.6%;实现旅游总收入76.9亿元。其中,全市A级景区接待游客431.9万人次,实现门票收入3287.6万元,分别恢复至2021年同期的50.4%、32.4%。本次展览,是宋瓷五大名窑首次在西南地区集结展出。“十一”假期前4天累计接待市民游客超过4万人次。洛带古镇、街子古镇等纷纷推出特色节庆活动。

  • 2019联通4g接入点设置最新(中国联通5g网络接入点设置)

    apn设置后它决定了手机通过哪种接入方式来访问移动网络。

  • ninebot9号平衡车怎么样(以Ninebot九号为首的电动平衡车五大品牌推荐)

    Segway总部设在美国,是个人发展电动汽车交通系统设备提供商。以上五个品牌的平衡车,以Ninebot九号、赛格威和小米为主,占据平衡车市场的主流市场,而阿尔郎和领奥则以价格取胜,也有不小的市场份额。不过近年来,一些劣质和低质平衡车频频出事,平衡车安全引起了很多家长的重视。

  • 小青鱼干怎么做不腥(小青鱼干如何做不腥)

    下面更多详细答案一起来看看吧!小青鱼干怎么做不腥小青鱼干400克,素鸡200克,油菜心、胡萝卜片各适量调料味精、鸡精、绍酒、姜葱汁、姜片各少许。碗中放入调料蒸15分钟。把蒸好的鱼干倒扣入盘中,淋玻璃芡,菜心、胡萝卜片围边即可。