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