1 分類spa
1) 按操做數數目來劃分:
1)單目運算符
2)雙目運算符
3)三目運算符:三元運算符
2) 按功能來劃分:
1)算術運算符code
2)賦值運算符blog
3)比較運算符內存
4)邏輯運算符table
5)位運算符class
2 算術運算符二進制
+ | 加法 |
- | 減法 |
* | 乘法 |
/ | 除法 |
% | 餘數 |
System.out.println(1 + 1);//2 System.out.println(2 - 1);//1 System.out.println(4 * 2);//8 System.out.println(4 / 2);//2 System.out.println(12 % 2);//2
3 賦值運算符tab
= |
+= |
-= |
*= |
/= |
%= |
++ |
-- |
&= |
|= |
^= |
>>= |
<<= |
//>>=
int a1 = 12; //a1 >>=2 --> a1 = a1 >> 2 //1100 --> 0011 = 3 a1 >>= 2; System.out.println(a1);//3
//<<= int a2 = 5; //a2 <<= 2 --> a2 = a2 >> 2 //0101 --> 10100 = 20 a2 <<= 2; System.out.println(a2);//20
//&= int b1 = 10; //b1 &= 5 --> b1 = b1 & 5 //1010 & 0101 = 0000 = 0 b1 &= 5; System.out.println(b1);//0
//|= int b2 = 10; //b2 |= 5 --> b2 = b2 | 5 //1010 | 0101 = 1111 = 15 b2 |= 5; System.out.println(b2);//15
//^= int b3 = 10; // b3 ^= 6 --> b3 = b3 ^ 6 // 1010 ^ 0110 = 1100 = 12 b3 ^= 6; System.out.println(b3);//12
4 比較運算符di
== | 等於 |
> | 大於 |
< | 小於 |
>= | 大於等於 |
<= | 小於等於 |
!= | 不等於 |
5 邏輯運算符co
& | 邏輯與 |
| | 邏輯或 |
&& | 短路與 |
|| | 短路或 |
! | 非 |
6 位運算符
| | 或 |
& | 與 |
^ | 異或 |
~ | 非 |
1)與
//邏輯與: //當相同的位上均爲1時結果爲1,不然結 果爲0 //練習1: // 12 --> 1100 // 5 --> 0101 // 1100 & 0101 = 0100 = 4 System.out.println(12 & 5);// //練習2: // 7 --> 0111 // 9 --> 1001 // 0111 & 1001 = 0001 = 1 System.out.println(7 & 9);//1
2)或
//邏輯或 //當兩邊操做數的位有一邊爲1時,結果爲1,不然爲0 //練習1: //7 --> 0111 //9 --> 1001 //0111 | 1001 = 1111 = 15 System.out.println(7 | 9);//15 //練習2: //4 --> 0100 //8 --> 1000 //0100 | 1000 = 1100 = 12 System.out.println(4 | 8);//12
3)異或
//異或 //兩邊的位不一樣時,結果爲1,不然爲0 //練習1: // 12 --> 1100 // 5 --> 0101 // 1100 ^ 0101 = 1001 = 9 System.out.println(12 ^ 5);//9 //練習2: // 8 --> 1000 // 9 --> 1001 // 1000 ^ 1001 = 0001 = 1 System.out.println(8 ^ 9);//1
4)非~
//非 //將數字補碼取反 1變0 0變1 //練習1: byte a = 10; //a 轉換爲二進制 00001010 //由於是正數 原碼 = 反碼 = 補碼 //補碼爲00001010 //補碼經過非~進行取反 //獲得結果爲 11110101 //此數爲補碼 第1位爲1 是負數 //11110101(補碼) --> 11110100(反碼) --> 10001011(原碼) //10001011 = -11 System.out.println(~a);//-11 //練習2: //8默認爲int類型 佔用內存爲4字節 = 32比特 //轉換爲二進制爲32位 0+23個0+00001000 //由於是正數 原碼 = 反碼 = 補碼 //補碼爲 0+23個0+00001000 //補碼經過非~進行取反 //獲得結果爲 1+23個1+11110111 //此數爲補碼 第1位爲1 是負數 //1+23個1+11110111 (補碼) 轉換成反碼 //1+23個1+11110110(反碼) 轉換成原碼 //1+23個0+00001001(原碼) = -9 System.out.println(~8);//-9 //練習3: short s = -7; //-7的二進制爲 1 0000000 00000111(原碼) //1 1111111 11111000(反碼) //1 1111111 11111001(補碼) //補碼經過非~進行取反 //0 0000000 00000110(補碼) //由於是正數 原碼 = 反碼 = 補碼 //0 0000000 00000110(原碼) = 6 System.out.println(~s);//6