算术运算符
符号 | 运算 |
---|
= | 赋值运算 |
+ | 加法(连接字符串) |
- | 减法 |
% | 取余 |
* | 乘法 |
/ | 整除 |
比较运算符
符号 | 运算 |
---|
> | 大于 |
< | 小于 |
== | 等于 |
<= | 小于等于 |
>= | 大于等于 |
!= | 不等 |
逻辑运算符
符号 | 运算 |
---|
&& or & | 逻辑与 |
|| or | | 逻辑或 |
! | 逻辑非 |
&&和&的区别:&&如果第一个条件为假将不会执行第二个条件
||和|的区别:||如果第一个条件为真则不会执行第二个条件
从效率上来说&&,||的效率更高,一般情况下用的也是&&和||。
赋值运算符
符号 | 运算 |
---|
+= | 加等(a+=b实际上就是a=a+b) |
-= | 减等 |
/= | 除等 |
*= | 乘等 |
%= | 取模等 |
自加和自减运算符
符号 | 运算 |
---|
a++ | 实际上为a=a+1 |
++a | 实际上为a=a+1 |
a– | 实际上为a=a-1 |
–a | 实际上为a=a-1 |
a++和++a的区别在于优先级不同,++a的优先级别非常高,仅次于括号,a++和的优先级别非常非常低,甚至比赋值符都低。
例如
int a=1,b=1;
int c=(a++)+b++;
在执行第二个语句的最后b才加上一,运行结束后a,b为2,而c为3
三目运算符
条件表达式?值1:值2
条件表达式结果为真则返回结果值1,反正返回结果值2
类似于:
if(条件表达式)
return 值1;
else
return 值2;
位运算符
符号 | 运算 |
---|
& | 与运算 |
| | 或运算 |
^ | 异或运算 |
~ | 按位取反 |
<< | 左移运算 |
>> | 有符号右移运算 |
>>> | 无符号右移运算 |
- & 例如1&3结果为2,1为0000 0001,3为0000 0011,每位相对都为1为1,其余情况均为0,所以结果为0000 0010.
- | 例如1 |3结果为3,1为0000 0001,3为0000 0011,每位相对都为0为0,其余情况均为1,所以结果为0000 0011.
- ^例如1 ^3结果为2,1为0000 0001,3为0000 0011,每位相对如果不相同为1,如果相同则为0,所以结果为0000 0010.
- ~就是1为0,0为1,5的二进制位是0000 0101,取反后为1111 1010(此为补码,转换为反码为1111 1001,转换为源码为1000 0110),值为-6
- <<例如1 <<2结果为4,1为0000 0001,每位向右边移动2位,没有的位数则为0,结果为0000 0100.
- >>例如3 >>1结果为1,3为0000 0011,每位向左边移动1位,结果为0000 0001.
可以使用
a^=b;
b^=a;
a^=b;
来使用两个数的交换,要注意的两个数不能相等,否则答案将为0;