全部产品

Cava 运算符

更新时间:2020-04-02 15:20:22

简介

在编程中我们需要对一些变量进行运算,比如算术运算、逻辑运算等。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的结果为0
~ 按位取反:对操作数的每一位取反 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最低。但是在编码过程做我们很难提前预判没一个操作符的优先级,所以最好的办法就是我们通过()为每一个运算符强行指定其运算顺序,比如:

  1. int a = 1;
  2. int b = 2;
  3. int c = a * (b + 2); //通过()强制b+2优先计算