运算符
运算符优先级由高向低排序正确:()、!、算术运算符、关系运算符、逻辑运算符、赋值运算符
- 分类
算术运算符
+、-、*、/、%、++、–
**++、–**用法:
1.单独使用 2.参与运算
规律:
如果++、–在操作数的后面就先赋值,再自加1或者自减1
如果++、–在操作数的前面就先自加1或者自减1,再赋值
赋值运算符
一般形式
= 把右边的值赋值给左边
扩展形式—底层都默认添加了强制类型转换 +=、-=、*=、/=、%=、&=(按位与等)、|=(按位或 等)、^=(按位异或等)、>>=(右移等)、<<=(左移 等)、>>>=(无符号右移等)
比较运算符----结果一定是布尔值
==(恒等于)、!=、>、 <、 <=、 >=
逻辑运算符
用于连接布尔表达式或者布尔值的符号
表达式:用于连接变量或者数据且符合java语法的式子 a+b(算术表达式)
&(逻辑与)、|(逻辑或)、^(逻辑异或)、!(逻辑非)、&&(双与)、||(双或)
&&(双与)、||(双或)(以后常用)
&&和&的运算规律一致,如果&&左边的布尔值是false右边就不再执行—短路
||和|的运算规律一致,如果||左边的布尔值是true右边不执行—短路
如果||在&&前面发生了短路就会把&&短路掉
结论:
&:遇见false则false
|:遇见true则true
^:相同则false不同则true (吸铁石)
!:如果是偶数个就和原来不变是奇数个就取反
位运算符
所有的数据都要转成二进制补码
&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)、>>>(无符号右移)
00000000 00000000 00000000 00000100 int 4(补码)
00000000 00000000 00000000 00000111 int 7(补码)
操作& 遇0则0 1&任意一个整数==0就是偶数
任意正数&任意一个整数 一定是正数
00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
00000000 00000000 00000000 00000100 4
操作| 遇1则1 任意一个负数|任意一个整数 负数
00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
00000000 00000000 00000000 00000111 7
操作^ 相同则0不同则1
00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
00000000 00000000 00000000 00000011 3
操作~ 所有位按位取反
00000000 00000000 00000000 00000111
11111111 11111111 11111111 11111000 (补码)
11111111 11111111 11111111 11110111 (反码)
10000000 00000000 00000000 00001000 -8
^的扩展
一个整数按位异或上另一个整数两次结果值还是其本身
两个整数值互换
效率:2(按位异或 只能操作整数) 3(求和 一般是整数) 1(中间变量 开发中常用)
所有的移位操作移动的位数都要先取余32再进行移动
左移—往左移动几位就要在最右边(最低位)补几个0;操作>> 正数操作数/2^移动位数
右移----如果是正数右移几位就在最左边(最高位)补几个0;
如果是负数右移几位就在最左边(最高位)补几个1;操作<< 操作数*2^移动位数
无符号右移----无论正负都往右移几位最高位就补几个0;操作>>> 最后得到的一定是正数
三目(元)运算符----最后一定返回的是值
表达式?表达式值1:表达式值2;
执行流程:先去计算表达式的值,如果是true就把表达式值1进行返回,如果是false就把表达式值2进行返回
nextInt() next()(空白字符) nextLine()(空格换行)
2.优先级
() ~ ++ – ! * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值