上一節(jié)寫(xiě)了一些運(yùn)算符的注意事項(xiàng),這節(jié)開(kāi)頭依然是對(duì)運(yùn)算符的一些注意點(diǎn)的闡述!
比較運(yùn)算符除了>、>=、<、<=、==、!=之外需要注意instanceof:檢查是否是類(lèi)的對(duì)象,例如:”Hello” instanceof String ,返回結(jié)果位true。
1.邏輯運(yùn)算符&(與)的運(yùn)算特點(diǎn):運(yùn)算的兩邊只要有一個(gè)是false,結(jié)果肯定是false,只有兩邊都為true,結(jié)果才true;
|(或)的運(yùn)算特點(diǎn):運(yùn)算的兩邊只要有一個(gè)是true,結(jié)果肯定是true,只有兩邊都為false,結(jié)果是false;
^(異或)的運(yùn)算特點(diǎn):運(yùn)算的兩邊結(jié)果如果相同,結(jié)果是false,兩邊的結(jié)果不同,結(jié)果是true;
!(非)的運(yùn)算特點(diǎn):判斷事物的另一面;
&&(短路 雙與)的運(yùn)算特點(diǎn):與&運(yùn)算基本一致,只是&&當(dāng)左邊為false時(shí),右邊不參與運(yùn)算的,而&兩邊都得運(yùn)算;
||(短路 雙或)的運(yùn)算特點(diǎn):與|運(yùn)算基本一致,只是||當(dāng)左邊為true時(shí),右邊不參與運(yùn)算的,而|兩邊都得運(yùn)算;
2.位運(yùn)算符&(與位運(yùn)算符):運(yùn)算特點(diǎn)與邏輯運(yùn)算符的&一樣,只是這里針對(duì)二進(jìn)制的位運(yùn)算,例如:6&3=2;(二進(jìn)制原理:110&011=010),任何數(shù)與位為1取&運(yùn)算都為原來(lái)數(shù)(作用取某些有效位數(shù));
| (或運(yùn)算符):運(yùn)算特點(diǎn)或邏輯運(yùn)算符的&一樣,只是這里針對(duì)二進(jìn)制的位運(yùn)算,例如:6|3=7;(二進(jìn)制原理:110|011=111);
^(異或運(yùn)算符):運(yùn)算特點(diǎn)與邏輯運(yùn)算符的^一樣,只是這里針對(duì)二進(jìn)制的位運(yùn)算,例如:6^3^3 = 6,注:當(dāng)一個(gè)數(shù)異或運(yùn)算同一個(gè)數(shù)兩次,結(jié)果還是這個(gè)數(shù)本身(作用為加密的效果)
~ (反碼運(yùn)算符):運(yùn)算特點(diǎn)與符邏輯運(yùn)算符中的!一致的。
<<(左移運(yùn)算符):左移幾位其實(shí)就是該數(shù)據(jù)乘以2的幾次方。可以完成2的次冪運(yùn)算! eq:3<<2 = 3*2(2) = 12;
>> (右移運(yùn)算符) : 右移幾位其實(shí)就是該數(shù)據(jù)除以2的幾次冪。對(duì)于高位出現(xiàn)的空位,原來(lái)高位是什么就用什么補(bǔ)這個(gè)空位! eq:3>>2 = 3/2(2) = 3/4 = 0;
>>>(無(wú)符號(hào)右移運(yùn)算符):數(shù)據(jù)進(jìn)行右移時(shí),高位出現(xiàn)的空位,無(wú)論原高位是什么,空位都用0補(bǔ)。
練習(xí):
1.//最有效率的方式算出2乘以8等于幾? 答案:System.out.PRintln(2<<3);
2.對(duì)兩個(gè)整數(shù)變量的值進(jìn)行互換 ?
答案:
開(kāi)發(fā)時(shí),使用第三方變量的形式,因?yàn)殚喿x性強(qiáng)。 int c ; c = a; a = b; b = c;
這種方式不要用,如果兩個(gè)整數(shù)的數(shù)值過(guò)大,會(huì)超出int范圍,會(huì)強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)會(huì)變化。
a = a + b; //a = 3 + 5;a = 8; b = a - b; //3+5-5 = 3;b = 3; a = a - b; //3+5-3 = 5;a = 5;
面試的時(shí)候用。 a = a ^ b; //a = 3 ^ 5; b = a ^ b; //b = (3^5)^5; b = 3; a = a ^ b; //a = (3^5)^3; a = 5;
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注