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

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

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

[[431856]]

大家好,我是冰河~~

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

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

實現程序

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

  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()方法時,傳遞的參數上。所以,我們先來看看調用print()方法傳遞的參數,如下所示。

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

可以看到,調用print()方法傳遞的參數中,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語句的邏輯。

 

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

2024-08-12 12:30:27

2010-04-09 11:24:59

Oracle 排序

2015-03-12 10:46:30

代碼代碼犯罪

2024-03-18 08:14:07

SpringDAOAppConfig

2024-04-29 09:25:19

2022-11-28 07:10:57

2015-01-05 10:13:37

2020-12-12 13:50:16

云開發(fā)

2021-01-27 13:54:05

開發(fā)云原生工具

2018-06-24 16:39:28

Tomcat異常線程

2021-04-26 10:30:43

USB4設備Thunderbolt

2021-03-25 06:12:55

SVG 濾鏡CSS

2023-06-27 07:09:39

2022-06-28 08:42:03

磁盤kafka高性能

2017-12-15 10:50:40

Kotlin語法糖程序員

2024-09-29 08:47:55

2022-06-21 12:27:12

JavaScript前端

2022-06-15 07:21:47

鼠標指針交互效果CSS

2022-08-15 22:34:47

Overflow方向裁切

2022-07-11 13:09:26

mmapLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区永久视频免费观看 | 欧美激情久久久 | 色接久久 | 久久久精品日本 | 麻豆视频国产在线观看 | 久久在线精品 | 亚洲国产精品久久久久 | 国内自拍偷拍 | 中文字幕成人av | 亚洲精品自在在线观看 | 久久精品国产精品青草 | 亚洲 中文 欧美 日韩 在线观看 | 久久久成人网 | 国产免费观看一区 | 日本在线一区二区 | 亚洲欧美日本在线 | 日韩视频在线观看一区二区 | 天天玩天天操天天干 | 久色一区 | 精产国产伦理一二三区 | 免费能直接在线观看黄的视频 | 91视频中文 | 精品在线观看入口 | 天天操天天射天天 | 日韩视频精品在线 | 国产女人与拘做受免费视频 | 国产一区在线免费观看 | 亚洲aⅴ一区二区 | 亚洲精品av在线 | 伊人狠狠干 | 欧美一区二区视频 | 丝袜 亚洲 另类 欧美 综合 | 国产sm主人调教女m视频 | 麻豆国产一区二区三区四区 | 久久久久国产一区二区三区 | 久久久久久久一区 | 婷婷激情在线 | 盗摄精品av一区二区三区 | 精品一区二区三区在线播放 | 天天射影院 | 日本免费在线看 |