本文目錄一覽:
JAVA中&&和&、||和|的區別?
1、Java中叫做按位與,叫做短路與,它們的區別是:
既是位運算符又是邏輯運算符,的兩側可以是int,也可以是boolean表達式,當兩側是int時,要先把運算符兩側的數轉化為二進位數再進行運算,而短路與()的兩側要求必須是布爾表達式。舉例如下:
125 的值是多少?答:12轉成二進位數是1100(前四位省略了),5轉成二進位數是0101,則運算後的結果為0100即4 這是兩側為數值時;
若 int i = 2,j = 4;則(++i==2)(j++==4)的結果為false,其過程是這樣的:先判斷++i=2是否成立,這裡當然是不成立了(3 == 2),但是程序還會繼續判斷下一個表達式是否成立,j++==4 ,該表達式是成立的,但是運算符要求運算符兩側的值都為真,結果才為真,所以(++i==2)(j++==4)的結果為 false 注意 :為真的條件是兩側表達式都為真,但是即使我們判斷出左側表達式的值為false,程序也還是要繼續執行去判斷右側的表達式值的真假
若 int i = 2,j = 4;則(++i==2)(j++==4)的結果為false,其過程基本上和上面的是相同的,但是若左側表達式的值為false時,程序則不會繼續判斷右側表達式的真假了,短路與中,短路這個詞大概也就是這個意思吧
2、Java中『|』與『||』的區別
int i=0;
if(32 || (i++)1) i=i+1;
System.out.println(i);
這段程序會列印出1,而不是列印出2。
因為在if的條件判斷中,程序先判斷第一個表達式32是否成立,結果32為真,那麼按照邏輯來說,無論後面一個表達式(i++)1是否成立,整個或表達式肯定為真,因此程序就不去執行判斷後面一個表達式即(i++)1了,所以這裡i並沒有自增1。然後程序執行到i=i+1,於是i變為1。最後列印出1。
int i=0;
if(32 | (i++)1) i=i+1;
System.out.println(i);
如果換做這樣寫,那麼就是列印出2了,因為無論第一個條件32是否為真,程序都會去執行判斷第二個條件表達式,因此i++這個自增是會被執行的,再加上if內的i=i+1,所以最終i=2。
有些人習慣把||叫做短路或,把叫做短路與。和的區別和||與|的區別類似,對於來說,如果前面的條件表達式已經為假了,整個條件表達式肯定為假,就不會去執行判斷後面的條件表達式。
java中按位與和按位或的問題
按位與
按位或 |
轉為二進位操作即可
: 兩位同時為「1」,結果才為「1」,否則為0
|: 參加運算的兩個對象只要有一個為1,其值為1。
按位與:
5: 0000 0101
9: 0000 1001
1: 0000 0001
按位或:
5: 0000 0101
9: 0000 1001
13: 0000 1101
java中的按位與是如何計算的?麻煩結合6&2說明,謝謝!
6=0000 0110
2=0000 0010
按位與,就是將這兩個數字對應的位逐一進行與運算。
結果得0000 0010=2。
java中的按位與是什麼意思
按位與是整數運算,整數以二進位形式,每一位進行與運輸,例如6與7的計算過程,6和7的二進位分別是110、111,進行與運輸要求兩個數都為1結果為,否則結果為0,110與111的結果為110,也就是6與7=6。
看明白了吧,我是不是太羅嗦了點~~~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236881.html