您好,登錄后才能下訂單哦!
運算符指明對操作數的運算方式。組成表達式的Java操作符有很多種。運算符按照其要求的操作數數目來分,可以有單目運算符、雙目運算符和三目運算符,它們分別對應于1個、2個、3個操作數。運算符按其功能來分,有算術運算符、賦值運算符、關系運算符、邏輯運算符、位運算符和其他運算符。
比較(關系)運算符,邏輯運算符 ,位運算符,三元(三目)運算符
1)比較(關系)運算符
,<,>=,<=, ==(使用居多)
運算符連接的表達式無論是簡單還是復雜,結果最終都是boolean類型
舉例:
int a = 10 ;
int b = 20 ;
boolean result = (a==b) ; //a ≠ b
System.out.println("輸出結果為:"+result);//輸出結果為:false
2)邏輯運算符 (開發中使用)
基本邏輯符號
邏輯單與&
邏輯單或|
邏輯異或^
邏輯非!
擴展的(重點)
邏輯雙與&&
邏輯雙或||
舉例:
//定義三個變量
int a = 3 ;
int b = 4 ;
int c = 5 ;
//邏輯單與&
System.out.println((a>c)&(b>c)) ;//false & false -->false
System.out.println((a>c)&(b<c)) ;//false & true -->false
System.out.println((a<c)&(b>c)) ;//true & false -->false
System.out.println((a<c)&(b<c)) ;//true & true -->true
System.out.println("結論:并列關系,有false,則false") ;
//邏輯單或|
System.out.println((a>c)|(b>c)) ;//false | false -->false
System.out.println((a>c)|(b<c)) ;//false | true -->true
System.out.println((a<c)|(b>c)) ;//true | false -->true
System.out.println((a<c)|(b<c)) ;//true | true -->true
System.out.println("結論:或的關系,有true,則true (有一個滿足條件,則成立)") ;
//邏輯異或^
System.out.println((a>c)^(b>c)) ;//false ^ false -->false
System.out.println((a>c)^(b<c)) ;//false ^ true -->true
System.out.println((a<c)^(b>c)) ;//true ^ false -->true
System.out.println((a<c)^(b<c)) ;//true ^ true -->false
System.out.println("結論:相同則為false,不同則為true") ;
//邏輯非
System.out.println(!(a>c)) ; //true
System.out.println(!!(a>c)) ; //false
System.out.println(!!!(a>c)) ; //true
System.out.println(!!!!(a>c)) ; //false
System.out.println("結論:非true則false,非false,則true,偶數個非是它本身!") ;
//使用邏輯雙與來鏈接這些表達式
System.out.println((a>c) &&(b>c)) ;//false & false -->false
System.out.println((a>c) &&(b<c)) ;//false & true -->false
System.out.println((a<c) &&(b>c)) ;//true & false -->false
System.out.println((a<c) &&(b<c)) ;//true & true -->true
System.out.println("結論與邏輯單與&相同") ;
//邏輯單或|
System.out.println((a>c)||(b>c)) ;//false || false -->false
System.out.println((a>c)||(b<c)) ;//false || true -->true
System.out.println((a<c)||(b>c)) ;//true || false -->true
System.out.println((a<c)||(b<c)) ;//true || true -->true
System.out.println("結論與邏輯單或|相同") ;
//定義兩個變量
int x = 3 ;
int y = 4 ;
//boolean flag = ((++x == 3) & (--y ==4)) ; //true && true -->true
//boolean flag = ((x++ == 3) & (y-- ==4)) ; //true && true -->true
//boolean flag = ((x++ == 3) & (++y ==4)) ; //true && true -->true
//boolean flag = ((x++==3 ) && (y-- ==4) ); //true && true -->true
boolean flag = ((++x==3 ) && (y-- ==4) ); //false 右邊不執行
System.out.println("結論:當符號為&& ,左邊的表達式位false,右邊不執行(短路效果)") ;
int m = 4 ;
int n = 5 ;
//boolean flag2 = ((m++ == 4) | (--n == 5)) ; // true | false
//boolean flag2 = ((++m == 4) || (--n == 5)) ;//false || false
boolean flag2 = ((m++ == 4) || (--n == 5)) ;//true
System.out.println("結論:當符號為|| ,左邊表達式為true,右邊不執行(短路效果)") ;
3)位運算符:(了解)
位與&,位或|,位異或^, ~數據(反碼)
<<(左移動),>> 右移,>>> 無符號右移 (了解)
舉例:
位運算符: 位與& 位或| 位異或^ ~數據(反碼)
位與& 有0則0
3&4
00000000 00000000 00000000 00000011
& 00000000 00000000 00000000 00000100
-------------------------------------------
00000000 00000000 00000000 00000000
結果:0
結論:位與運算符的特點:有0,則0
位或| 有1則1
3|4
00000000 00000000 00000000 00000011
| 00000000 00000000 00000000 00000100
------------------------------------------
00000000 00000000 00000000 00000111
結果為:7
位或|運算符的特點:有1,則1
位異或^ 相同則0 不同則1
3^4
00000000 00000000 00000000 00000011
^ 00000000 00000000 00000000 00000100
------------------------------------------
00000000 00000000 00000000 00000111
結果為:7
位異或^運算符的特點:相同則為0,不同則為1
反碼5 求反碼(對當前數據的二進制數據全部按位取反,0變1,1變0)
~5
00000000 00000000 00000000 0000101(原碼,反碼,補碼)
11111111 11111111 11111111 1111010(全部按位取反)(這是補碼)
11111111 11111111 11111111 1111001(反碼)
10000000 00000000 00000000 0000110(原碼)
結果為:-6
反碼-3
~-3
10000000 00000000 00000000 000000011(原碼)
11111111 11111111 11111111 111111100(反碼)
11111111 11111111 11111111 111111101(補碼)
00000000 00000000 00000000 000000010(全部取反)
結果為:2
結論:求反碼(對當前數據的二進制數據全部按位取反,0變1,1變0)
左移: <<
3<<3
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00011000(左移三位)
16+8=24
------------------------------------------------
-3<<3
10000000 00000000 00000000 00000011
11111111 11111111 11111111 11111100(反碼)
11111111 11111111 11111111 11111101(補碼)
11111111 11111111 11111111 11101000(左移三位)(補碼)
11111111 11111111 11111111 11100111(反碼)
10000000 00000000 00000000 00011000(原碼)
結果: -24
右移: >>
3>>3
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000000(右移三位)
無符號右移>>>
20>>>2
00000000 00000000 00000000 00010100
00000000 00000000 00000000 00000101(無符號右移兩位,最高位都補0)
結果: 5
4)三元(三目)運算符:
固定格式:(表達式)?(表達式1):(表達式2)
執行流程: 判斷表達式的結果,
結果為true->執行表達式1的結果,
結果為false->執行表達式2的結果。
int a = 10;
int b = 20;
boolean res = (a>b)?true:false;//結果是:false;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。