簡介
在編程中我們需要對一些變數進行運算,比如算術運算、邏輯運算等。cava提供了一系列運算子來支援上述功能,根據運算情境的不同主要分成下面幾類:
算術運算子
關係運算子
位元運算符
邏輯運算子
賦值運算子
算術運算子
算術運算子主要用於數學計算,它們的含義和數學中的含義相同,下表列出了cava支援的所有運算子。
算術運算子 | 描述 | 樣本(int left = 20,right = 10;) |
+ | 加法:操作符兩邊的運算元相加 | int a = left + right; a結果為30 |
- | 減法:左邊的運算元減去右邊的運算元 | int a = left - right; a結果為10 |
* | 乘法:操作符兩邊的運算元相乘 | int a = left * right; a結果為200 |
/ | 除法:左邊的運算元除以右邊的運算元 | int a = left / right; a結果為2 |
% | 模數:左邊的運算元除以右邊的運算元的餘數 | int a = left % right; a結果為0 |
++ | 自增:運算元自身加一 | int a = left++; a結果為20, left為21 |
— | 自減:運算元自身減一 | int a = left—; a結果為20,left為19 |
說明:除法運算子的右邊變數不能為零,否則會觸發除零異常。int b = a++; 表示先將a賦值給b,然後a再自增。int b = ++a;表示a先自增,然後再講自增之後的a賦值給b。
關係運算子
cava中關係運算的結果為布爾(boolean)類型,主要用在if語句中。下表列出了cava支援的關係運算子:
關係運算子 | 描述 | 樣本(int left = 20,right = 10;) |
> | 大於:檢查左邊的運算元是否大於右邊的運算元,如果是結果為true,否則為false | boolean a = left > right; a的結果為true |
< | 小於:檢查左邊的運算元是否小於右邊的運算元,如果是結果為true,否則為false | boolean a = left < right; a的結果為false |
>= | 大於等於:檢查左邊的運算元是否大於或者等於右邊的運算元,如果是結果為true,否則為false | boolean a = left >= right; a的結果為true |
<= | 小於等於:檢查左邊的運算元是否小於或者等於右邊的運算元,如果是結果為true,否則為false | boolean a = left <= right; a的結果為false |
== | 等於:檢查左邊的運算元是否等於右邊的運算元,如果是結果為true,否則為false | boolean a = left == right; a的結果為false |
!= | 不等於:檢查左邊的運算元是否不等於右邊的運算元,如果是結果為true,否則為false | boolean a = left != right; a的結果為true |
位元運算符
數值在電腦中是通過二進位進行表示的,cava提供了一系列位元運算符,支援對int、long、short、char、byte等類型變數在按位進行運算。下表列出了cava支援的位元運算符:
位元運算符 | 描述 | 樣本(int left = 1,right = 2;) |
& | 按位與:兩個運算元的某一位都為1時這位才為1 | int a = left & right; a的結果為0 |
| | 按位或:兩個運算元的某一位只要有一個不為1時這位就為1 | int a = left | right; a的結果為3 |
^ | 按位異或:兩個運算元的某一位不同時這位才為1 | int a = left ^ right; a的結果為3 |
~ | 按位取反:對運算元的每一位取反 | int a = ~left; a的結果為-2 |
<< | 左移:運算元左移指定的位元 | int a = left << 2; a的結果為4 |
>> | 右移:操作室右移指定的位元 | int a = right >> 1; a的結果為1 |
邏輯運算子
cava中的邏輯運算子用於串連布爾型的變數組成更複雜的語句,下表列出了cava中支援的邏輯運算子:
邏輯運算子 | 描述 | 執行個體(boolean left = true, right = false;) |
&& | 邏輯與:兩邊的運算元都為true時結果才為true | boolean a = left && right; a的結果為false |
|| | 邏輯或:兩邊的運算元任何一個為true時,結果就為true | boolean a = left || right; a的結果為true |
! | 邏輯非:取反運算元的邏輯狀態,true結果為false,false結果為true | boolean a = !left; a的結果為false |
賦值運算子
賦值運算子用於將一個變數賦值給另一個變數,下表列出了cava中支援的賦值運算子:
賦值運算子 | 描述 | 樣本(int left = 1, right = 2;) |
= | 簡單賦值:將右邊運算元的值賦給左邊運算元 | left = right; left結果為2 |
+= | 加和賦值:將左邊運算元和右運算元相加後賦給左邊運算元 | left += right; left結果為3 |
-= | 減和賦值:將左邊運算元和右運算元相減後賦給左邊運算元 | left -= right; left結果為-1 |
*= | 乘和賦值:將左邊運算元和右運算元相乘後賦給左邊運算元 | left *= right; left結果為2 |
/= | 除和賦值:將左邊運算元和右運算元相除後賦給左邊運算元 | left /= right; left結果為0 |
%= | 模數和賦值:將左邊運算元和右運算元模數後賦給左邊運算元 | left %= right; left結果為1 |
&= | 按位與賦值:將左邊運算元和右運算元按位與後賦給左邊運算元 | left &= right; left結果為0 |
|= | 按位或賦值:將左邊運算元和右運算元按位或後賦給左邊運算元 | left |= right; left結果為3 |
^= | 按位異或賦值:將左邊運算元和右運算元按位異或後賦給左邊運算元 | left ^= right; left結果為3 |
<<= | 左移賦值:將左邊運算元左移右運算元位元後賦給左邊運算元 | left <<= right; left結果為4 |
>>= | 右移賦值:將左邊運算元右移右運算元位元後賦給左邊運算元 | left >>= right; left結果為0 |
條件運算子 (? :)
cava目前暫不支援條件運算子,有相關尋求的使用者可以使用if語句進行替代。
運算子的優先順序
在編碼過程中,我們經常會遇到多個運算子混合使用的情況,下表列出了cava支援的運算子的優先順序:
優先順序 | 運算子 | 結合性 |
1 | () [] . | 從左向右 |
2 | ! +(正) -(負) ~ ++ — | 從右向左 |
3 | * / % | 從左向右 |
4 | +(加) -(減) | 從左向右 |
5 | << >> | 從左向右 |
6 | < <= > >= | 從左向右 |
7 | == != | 從左向右 |
8 | & | 從左向右 |
9 | ^ | 從左向右 |
10 | | | 從左向右 |
11 | && | 從左向右 |
12 | || | 從左向右 |
13 | = += -= *= /= %= &= |= ^= ~= <<= >>= | 從右向左 |
上表中優是按照優先順序從高到低的順序,也就是優先順序為1的最高,優先順序14最低。但是在編碼過程做我們很難提前預判沒一個操作符的優先順序,所以最好的辦法就是我們通過()為每一個運算子強行指定其運算順序,比如:
int a = 1;
int b = 2;
int c = a * (b + 2); //通過()強制b+2優先計算