這是一道簡單的面試題

前言

前幾天,有個學員跟我說了一道面試題,很簡單,但是可能也會有一些人不知道,所以跟大家分析一下。

或運算中,| 和 || 有什麼區別?

分析

我們都知道,|和||這兩個運算符都可以用來表示或運算,那麼他們之間有什麼區別呢?

首先,對於值類型來說,我們只能用|來進行位運算,但是對於布爾類型來說,|和||都可以,所以這是他們的區別之一,|既能用於值類型,也可以用於布爾類型,但是||只能用於布爾類型。

 

 

 

 

其次,既然|和||都可以用於布爾類型,那麼兩者有沒有什麼區別呢?

寫了一段簡單的代碼,如下圖所示:

 

 

如果我們使用||,運行時會發現,Get1方法裏的斷點可能正常進入,而Get2方法裏的斷點不會進去,因爲對於或運算,當檢測到Get1返回值爲True之後,不管後續的結果是True還是False,結果均爲True,所以就不會進入Get2方法內部了。

如果將Get1的返回值改成False,那麼還是會進入Get2方法的。

 

 

同樣的代碼,如果將 || 改成 | ,我們會發現,無論Get1返回True或False,兩個方法裏的斷點,都會進入。

 

 

所以,總結就是||會根據前面的執行結果動態執行後面的代碼,而|不管前面的執行結果如何,都會執行後面的代碼。

同理,對於&和&&也是同樣的區別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章