在编程中我们需要对一些变量进行运算,比如算术运算、逻辑运算等。cava提供了一系列运算符来支持上述功能,根据运算场景的不同主要分成下面几类:
算术运算符主要用于数学计算,它们的含义和数学中的含义相同,下表列出了cava支持的所有运算符。
算术运算符
描述
示例(intleft=20,right=10;)
+
加法:操作符两边的操作数相加
inta=left+right;a结果为30
-
减法:左边的操作数减去右边的操作数
inta=left-right;a结果为10
*
乘法:操作符两边的操作数相乘
inta=left*right;a结果为200
/
除法:左边的操作数除以右边的操作数
inta=left/right;a结果为2
%
取模:左边的操作数除以右边的操作数的余数
inta=left%right;a结果为0
++
自增:操作数自身加一
inta=left++;a结果为20,left为21
—
自减:操作数自身减一
inta=left—;a结果为20,left为19
说明:除法运算符的右边变量不能为零,否则会触发除零异常。intb=a++;表示先将a赋值给b,然后a再自增。intb=++a;表示a先自增,然后再讲自增之后的a赋值给b。
cava中关系运算的结果为布尔(boolean)类型,主要用在if语句中。下表列出了cava支持的关系运算符:
关系运算符
>
大于:检查左边的操作数是否大于右边的操作数,如果是结果为true,否则为false
booleana=left>right;a的结果为true
<
小于:检查左边的操作数是否小于右边的操作数,如果是结果为true,否则为false
booleana=left >= 大于等于:检查左边的操作数是否大于或者等于右边的操作数,如果是结果为true,否则为false booleana=left>=right;a的结果为true <= 小于等于:检查左边的操作数是否小于或者等于右边的操作数,如果是结果为true,否则为false booleana=left<=right;a的结果为false == 等于:检查左边的操作数是否等于右边的操作数,如果是结果为true,否则为false booleana=left==right;a的结果为false != 不等于:检查左边的操作数是否不等于右边的操作数,如果是结果为true,否则为false booleana=left!=right;a的结果为true 数值在计算机中是通过二进制进行表示的,cava提供了一系列位运算符,支持对int、long、short、char、byte等类型变量在按位进行运算。下表列出了cava支持的位运算符: 位运算符 示例(intleft=1,right=2;) & 按位与:两个操作数的某一位都为1时这位才为1 inta=left&right;a的结果为0 | 按位或:两个操作数的某一位只要有一个不为1时这位就为1 inta=left|right;a的结果为3 ^ 按位异或:两个操作数的某一位不同时这位才为1 inta=left^right;a的结果为3 ~ 按位取反:对操作数的每一位取反 inta=~left;a的结果为-2 << 左移:操作数左移指定的位数 inta=left<<2;a的结果为4 >> 右移:操作室右移指定的位数 inta=right>>1;a的结果为1 cava中的逻辑运算符用于连接布尔型的变量组成更复杂的语句,下表列出了cava中支持的逻辑运算符: 逻辑运算符 实例(booleanleft=true,right=false;) && 逻辑与:两边的操作数都为true时结果才为true booleana=left&&right;a的结果为false || 逻辑或:两边的操作数任何一个为true时,结果就为true booleana=left||right;a的结果为true ! 逻辑非:取反操作数的逻辑状态,true结果为false,false结果为true booleana=!left;a的结果为false 赋值运算符用于将一个变量赋值给另一个变量,下表列出了cava中支持的赋值运算符: 赋值运算符 示例(intleft=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支持的运算符的优先级: 优先级 运算符 结合性 1 ()[]. 从左向右 2 !+(正)-(负)~++— 从右向左 3 */% 4 +(加)-(减) 5 <<>> 6 <<=>>= 7 ==!= 8 9 10 11 12 13 =+=-=*=/=%=&=|=^=~=<<=>>= 上表中优是按照优先级从高到低的顺序,也就是优先级为1的最高,优先级14最低。但是在编码过程做我们很难提前预判没一个操作符的优先级,所以最好的办法就是我们通过()为每一个运算符强行指定其运算顺序,比如: