回答這個問題方法:
先說兩者的共同點,再說出&&和&的特殊之處,并列舉一些經典的例子來表明自己理解透徹深入、實際經驗豐富。
共同點:&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
不同點:
1、&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,
如果將&&改為&,那么倆個表達式都會執行,不管第一個表達式是否為false。
回答到這里是一般人做法,那么我們如果是面試大廠,那么你就需要在加上,它的好處
比如內存優化,代碼優化,你都可以衍生點,如果這個是在一個循環語句中套著一個if判斷,如果是安50次循環來計算,那么他少執行了50次判斷,這樣回答比較完美了。
2、&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位。(同樣的到這里一般人回答就結束了)
那么我們要說說什么位運算,這樣第一可以說明我們是真的理解這個題不是說在背面試。
第二說明我們有專研的精神,位運算大家自己根據自身情況來說。
二、代碼
例如,對于if(str != null && !str.equals(“”))表達式,當str為null時,后面的表達式不會執行,所以不會出現NullPointerException。
如果將&&改為&,則會拋出NullPointerException異常。if(x==33 & ++y>0) y會增長,if(x==33 && ++y>0)不會增長,說明
更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助理你實現java程序員夢想。