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