前幾天,看到了一道面試題,很簡單,但是可能也會有一些人不知道,所以跟大家分析一下。
分析或運(yùn)算中,| 和 || 有什么區(qū)別?
我們都知道,|和||這兩個(gè)運(yùn)算符都可以用來表示或運(yùn)算,那么他們之間有什么區(qū)別呢?
首先,對于值類型來說,我們只能用|來進(jìn)行位運(yùn)算,但是對于布爾類型來說,|和||都可以,所以這是他們得區(qū)別之一,|既能用于值類型,也可以用于布爾類型,但是||只能用于布爾類型。
其次,既然|和||都可以用于布爾類型,那么兩者有沒有什么區(qū)別呢?
寫了一段簡單得代碼,如下圖所示:
如果我們使用||,運(yùn)行時(shí)會發(fā)現(xiàn),Get1方法里得斷點(diǎn)可能正常進(jìn)入,而Get2方法里得斷點(diǎn)不會進(jìn)去,因?yàn)閷τ诨蜻\(yùn)算,當(dāng)檢測到Get1返回值為True之后,不管后續(xù)得結(jié)果是True還是False,結(jié)果均為True,所以就不會進(jìn)入Get2方法內(nèi)部了。
如果將Get1得返回值改成False,那么還是會進(jìn)入Get2方法得。
同樣得代碼,如果將 || 改成 | ,我們會發(fā)現(xiàn),無論Get1返回True或False,兩個(gè)方法里得斷點(diǎn),都會進(jìn)入。
所以,總結(jié)就是||會根據(jù)前面得執(zhí)行結(jié)果動(dòng)態(tài)執(zhí)行后面得代碼,而|不管前面得執(zhí)行結(jié)果如何,都會執(zhí)行后面得代碼。
同理,對于&和&&也是同樣得區(qū)別看,不知道大家都明白了么?