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

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语句的逻辑。

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

    推荐阅读
  • 头发特别爱油怎么解决(解决头发出油的窍门)

    下面希望有你要的答案,我们一起来看看吧!头发特别爱油怎么解决不要勤洗头。虽然为了头发飘逸更好看,但是过度的清洁油脂反而会起反效果,最好2-3天洗一次。使用干发免洗喷雾。这个方法比较适用于应急的时候可以选用一款水润型的免洗喷雾,喷在头发上梳理一下,吹风机用冷风稍微吹一下,可以很好的避免油发出门。

  • 食神电影有几部(最美味不过星爷一碗暗然消魂饭)

    周星驰早年的一些电影一直被大众奉为经典,而在周星驰众多的经典电影之中,《食神》这部电影可以算是频繁并且不起眼的,有很多人都认为这部电影非常的普通,但是,我却对《食神》这部电影情有独钟。史蒂芬周在《食神》这部电影之中所做的那一晚暗然消魂饭,其实并不是表现了对于莫文蔚的一种爱情,仅仅只是表现出一种,对于恩情的回报而已。

  • 怎样储存毛笋(怎么储存毛笋)

    接下来我们就一起去研究一下吧!怎样储存毛笋用密封储藏法即可。把毛笋放到大桶、坛、罐或是缸等容器里,洒点水,然后用盖子等密封口部,放置在避光阴凉处即可。这种方法保存时间不能超过一个月,时间过长会变质,如果口部密封不漏气可以保存30天左右,如果口部不能严密封紧,则可能只能保存半个月左右。如果毛笋数量比较多,短期无法食用完,又未剥壳,那可以用埋藏法。

  • 传统木须肉的家常做法(传统木须肉怎么做)

    传统木须肉的家常做法猪瘦肉150克,鸡蛋150克,干木耳5克,黄瓜50克,盐5克,酱油3克,料酒5克,油80克,香油少许。干木耳加开水泡5分钟,去掉根部,撕成块。炒锅上火,加油,烧热后加入鸡蛋炒散,使其成为不规则小块,盛装在盘中,即为所说的“木须”。炒锅上火,加油烧热,将肉丝放入煸炒,肉色变白后,加入葱、姜丝同炒,至八成熟时,加入料酒、酱油、盐,炒匀后加入木耳、黄瓜和鸡蛋块同炒,熟后淋入香油即可食用了。

  • 牛百叶是牛的哪个部位,牛百叶选购技巧

    2、不要选择看起来比较白,有的不良商家会为了让牛百叶颜色看起来好看,会浸泡在双氧水中增白。

  • 电脑diy 博主配置(师兄怎能不会修电脑)

    9-10月期间又到了一年一度装机季,各大高考开学直接带动了各地电脑城生意。首先两边面板采用密度高的高分子吸音棉材质,可吸收机箱内发出的噪音。除了背部有出风口外,金河田MUT1在正面右侧位置设计了排气孔,前置位置标配2x120mm散热风扇,后置位置标配1*120mm的风扇。外观方面来看,“时空战舰”名号与这个设计的确十分融洽,科技感十足。下置LED灯效的LOGO铭牌。合上两边盖子后,整机的噪音降到了55.7分贝,的确可以有,基本上和室内噪音持平。

  • 液体创口贴有毒吗(液体创口贴有没有毒)

    下面更多详细答案一起来看看吧!一般来说液体创口贴的成分有:20%的纳米银,15%乙醇,10%聚乙烯醇缩醛、8%酮油、8%甲壳素、5%丙酮、5%丙三醇、3%二丁酯、3%薄荷油、3%麦饭石粉和蒸馏水,5%的聚氨酯,6%的生姜提取物,2%的芦荟提取物,并无有毒有害成分。

  • 狗狗缺钙的五大症状(一分钟判断狗狗是否缺钙)

    幼犬如果钙质补充不足,可出现肋骨外翻,前肢腕关节、肘关节变形,小型犬容易出现“O”形腿,大中型犬会引起前肢严重变形。如果发现不及时,治疗不得当还可能引起永久性的趴爪或跛行。这些狗狗在成年后易患口臭、牙龈炎等疾病。

  • 吃鱼会胖吗(吃鱼是否会胖)

    鱼肉的营养价值也比较高,含有丰富的叶酸、维生素,有一定的滋补的效果,而且也有一定的清热解毒的功效。减肥期间,可以适当的多吃一些清蒸鱼,尽量不要吃炸鱼或者是煎鱼,否则也容易导致热量偏高。

  • 沪港引11是什么船 沪港引11船舶资料

    沪港引11是港务专用引航船。引航船也叫引水船,是用来接送引航员上下大船的工具。“沪港引11轮的建造使用将从根本上解决原有引航船不能够满足上海港引航作业需求的瓶颈问题,进一步推进我站基础设施建设,保障长江口引航作业的安全、高效,为进出上海港和长江的船舶提供更加优质的引航服务。