零、分类
1.算术运算符
2.赋值运算符
3.比较运算符(关系运算符)
4.逻辑运算符
5.位运算符
6.三元运算符
一、算数运算符
图里自增前后写反了,自增(前):先取值后运算(先自+1后赋值),自增(后):先运算后取值(先赋值后自+1),自减同理。
"/ "除运算注意的地方:
int a=12,b=5;
int c=a/b; //2
double d=a/b; //2
double e=a/(b+0.0); //2.4
double f=(double)a /b; //2.4
自增1不会改变本身类型:
short a=10;
a++; //a仍是short类型
但是:
a=a+1; //此时等号后边是int型,前面是short型,编译出错
二、赋值运算符
+=, -=, *=, /=, %= ,都不会改变本身类型
三、比较运算符
四、逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
操作变量都是布尔类型。
&与 &&执行结果相同,不同之处在于,当判断条件假时,&仍继续判断下一个条件,而&&跳出不再判断。
| 与 || 类似,&与 &&执行结果相同,且判断条件直至条件为真。不同之处在于, | 仍继续判断下一个条件,而 || 跳出不再判断。
五、位运算符
左移×2,右移/2。
左移空出来的位置用0补,正数右移相同,负数右移出来的位置用1补。
无符号移位,被移位二进制最高位无论是0或者是1,空缺位都用0补。
六、三元运算符
(条件表达式)?表达式1:表达式2;
条件表达式为true,运算后的结果是表达式1; 条件表达式为false,运算后的结果是表达式2;
三元运算符可简化if-else语句
七、运算符的优先级
如下表,上一行运算符总优先于下一行。
只有单目运算符、三元运算符、赋值运算符是从右向左运算的。