成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一段很有意思的代碼!!!你看懂了嗎?

開發(fā) 前端
今天,給大家分享一段很有意思的代碼,這段代碼在執(zhí)行方法時,不但會執(zhí)行方法的 if 分支,也會執(zhí)行方法的 else 分支,就是這么神奇。

[[431856]]

大家好,我是冰河~~

今天,給大家分享一段很有意思的代碼,這段代碼在執(zhí)行方法時,不但會執(zhí)行方法的 if 分支,也會執(zhí)行方法的 else 分支,就是這么神奇。

好了,我們直接上代碼吧。

實現(xiàn)程序

我們先來看一段代碼,如下所示。

  1. public class Test { 
  2.  
  3.     public static void main(String[] args) { 
  4.         new Test().print(args==null || new Test() {{Test.main(null);}}.equals(null)); 
  5.     } 
  6.  
  7.     public void print(boolean flag){ 
  8.         if(flag){ 
  9.             System.out.println("我是if語句的分支"); 
  10.         }else
  11.             System.out.println("我是else語句的分支"); 
  12.         } 
  13.     } 

在你的IDE中運行下這段程序,沒錯,輸出結果如下所示。

  1. 我是if語句的分支 
  2. 我是else語句的分支 

我去,竟然真的同時執(zhí)行了if語句和else語句,這是怎么回事呢?

代碼分析

我們來看這段代碼反編譯后的結果,如下所示。

  1. public class Test { 
  2.     public Test() { 
  3.     } 
  4.  
  5.     public static void main(String[] args) { 
  6.         (new Test()).print(args == null || (new Test() { 
  7.             { 
  8.                 Test.main((String[])null); 
  9.             } 
  10.         }).equals((Object)null)); 
  11.     } 
  12.  
  13.     public void print(boolean flag) { 
  14.         if (flag) { 
  15.             System.out.println("我是if語句的分支"); 
  16.         } else { 
  17.             System.out.println("我是else語句的分支"); 
  18.         } 
  19.  
  20.     } 

看到這里,有木有一種恍然大悟的感覺呢?沒錯,上述的程序在本質上,main方法執(zhí)行了兩次。為什么會是執(zhí)行了兩次呢?原因就在main方法中調用print()方法時,傳遞的參數(shù)上。所以,我們先來看看調用print()方法傳遞的參數(shù),如下所示。

  1. args == null || (new Test() { 
  2.     { 
  3.         Test.main((String[])null); 
  4.     } 
  5. }).equals((Object)null

可以看到,調用print()方法傳遞的參數(shù)中,args == null為true,執(zhí)行print()方法的if語句,這點不難理解。接下來就是要重點理解下面的代碼片段了。

  1. (new Test() { 
  2.     { 
  3.         Test.main((String[])null); 
  4.     } 
  5. }).equals((Object)null

這段代碼是什么意思呢?首先,這段代碼再次創(chuàng)建了一個Test類的對象實例,并在代碼塊中調用了Test類的main()方法。

此時,由于Test類的對象實例不為空,所以,equals((Object)null)會返回false。

 

此時,再次執(zhí)行print()方法時,傳遞的flag為false,執(zhí)行了else語句的邏輯。

 

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2010-04-09 11:24:59

Oracle 排序

2024-08-12 12:30:27

2015-03-12 10:46:30

代碼代碼犯罪

2024-03-18 08:14:07

SpringDAOAppConfig

2015-01-05 10:13:37

2024-04-29 09:25:19

2022-11-28 07:10:57

2020-12-12 13:50:16

云開發(fā)

2018-06-24 16:39:28

Tomcat異常線程

2021-01-27 13:54:05

開發(fā)云原生工具

2021-03-25 06:12:55

SVG 濾鏡CSS

2017-12-15 10:50:40

Kotlin語法糖程序員

2021-04-26 10:30:43

USB4設備Thunderbolt

2023-06-27 07:09:39

2022-06-28 08:42:03

磁盤kafka高性能

2022-08-15 22:34:47

Overflow方向裁切

2022-06-21 12:27:12

JavaScript前端

2022-07-11 13:09:26

mmapLinux

2022-06-15 07:21:47

鼠標指針交互效果CSS

2024-09-29 08:47:55

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲 精品 综合 精品 自拍 | 91观看| 北条麻妃一区二区三区在线观看 | 久久伊人青青草 | 国产分类视频 | 免费黄色大片 | 麻豆国产一区二区三区四区 | 国产欧美精品一区二区色综合朱莉 | 91在线观看视频 | 影视一区 | 色.com| 亚洲成人日韩 | 成人av大全 | 亚洲成人综合在线 | 黄色成人在线网站 | 久草免费电影 | 久久成人国产精品 | 国产精品地址 | av中文字幕在线 | 国产视频一二三区 | 国产玖玖 | 久久国产一区二区三区 | 久久美国 | 97精品国产97久久久久久免费 | 国产精品国产三级国产aⅴ原创 | 99热精品久久 | 欧美综合国产精品久久丁香 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 日本精品久久久久久久 | 国产亚洲二区 | 国产精品视频播放 | 亚洲视频自拍 | 亚洲一区二区高清 | 免费国产视频 | a在线视频 | 三级av免费| 91日日| 亚洲视频免费在线 | 99九九视频| 欧洲一区二区视频 | 亚洲国产精品久久久久秋霞不卡 |