运算符 是用来指明对于操作数的运算方式
分类
按照运算的数目进行分类
单目 双目 · 三目
a++ a+b (a>b)? x:y
按照运算符功能进行分类
算数运算符 + — * / %(取余数) ++(自增) --(自减)
int z = 1;
for (int i = 1; i <= 10000; i++) {
z = z++;
}
System.out.println(z);//结果是1
赋值运算符 =(赋值符号将=右边的内容存入=左边变量空间内)
+= —= /= *= %=
byte x=1;
x+=2;//结果为3 自动类型提升 3=自动转化
x=x+2;//编译出错 类型从int转化byte可能有损失 正确表达式为 x=(byte)(x+2);
关系运算符(比较)
> >= < <= !=(不等于) == instfanceof(比较一个对象是否属于instfanceof)
1.区分一个等号和两个等号区别
= 一个等号是赋值符号 将等号后边结果(值 引用)存入等号左边的变量空间内
== 比较符号 比较等号前边后边的元素(值 引用)是否一致
2.比较运算符最终结果是什么?
boolean类型 比较结果: true false
逻辑运算符 条件
&逻辑与 |逻辑或 ^逻辑异或 !逻辑非
&&短路与 ||短路或
1.逻辑运算符前后链接是两个boolean结果
&逻辑与 可以李姐为中“和”“并且”意思 &前后两个条件必须同时满足最终才为true
|逻辑或 可以李姐为中文“或者”前后两个条件只要有一个1满足 最终就为true
^逻辑异或 可以李姐为前后两个表达式结果不一致 最终结果为true
! 逻辑非 将原来结果取反 可以李姐为中文的不
&&短路与
什么情况发生短路? 当前边的表达式false最终肯定为false
短路到底是什么? 短路的是&&之后的过程
如果发生短路的情况时? 性能比&稍微好一点
&逻辑与和&&短路与 从执行最终结果来看没有任何区别
短路与不一定提高性能 只有当前面为false的时候会发生短路 才会提高性能
位bit运算
&按位与 |按位或 ^按位异或 ~按位取反 <<按位左位移 >>按位右位移 >>>按位右位移(无符号)