文章目录
运算符
表示数据的运算,赋值,比较
注意:有小数参与的运算,得到的结果是近似值
算数运算符
% 的本质:看一个公式:a % b = a - a / b * b
当a%b中的a是小数时,公式 = a - (int)a/b*b
-10.5%3 = -10.5-(-10)/3*3 = -10.5+9 = -1.5自增作为独立语句使用的的话,前++和后++完全等价于 i= i+ 1
关系运算符(比较运算符)
- 关系运算符的结果都是boolean型,也就是要么是true,要么是false
- 关系表达式 经常在if结构得到条件语句中或循环结构的条件中
细节
- 关系运算符的结果都是boolean型,也就是要么是true,要么是false。
- 关系运算符组成的表达式,我们称之为关系表达式 a<b
- 比较运算符”==“ 不能误写成”=“
逻辑运算符(表)
用于连接多个条件(多个关系表达式),最终的结果也是一个Boolean值
短路与(&&)和 逻辑与(&)的区别
- 对于&&短路与而言:如果第一个条件为false,后面的条件不会再进行判断
- 对于&逻辑与而言,如果第一个条件为false,后面的条件仍会判断
int a = 4;
int b = 9;
if(a < 1 && ++b < 50){
System.out.println("ok");
}
System.out.println("a=" + a + " b=" + b);
最后输出a=4 b=9
int a = 4;
int b = 9;
if(a < 1 & ++b < 50){
System.out.println("ok");
}
System.out.println("a=" + a + " b=" + b);
最后输出a=4 b=10
||短路或 和 |逻辑或区别
- ||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
- |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
int a = 4;
int b = 9;
if(a > 1 || ++b > 4){
System.out.println("ok");
}
System.out.println("a=" + a + " b=" + b);
最后输出a=4 b=9
int a = 4;
int b = 9;
if(a > 1 | ++b > 4){
System.out.println("ok");
}
System.out.println("a=" + a + " b=" + b);
最后输出a=4 b=10
取反操作
真变假,假变真
逻辑异或(^)
不同为true,相同为false
bollean b = (10 > 1) ^ (3 < 5);
System.out.println("b=" +b); // 输出 b= true
赋值运算符
将某个运算后的值,赋值给指定的变量
赋值运算符的分类
-
基本运算符: =
-
符合运算符:+= ,-= , /= , %= ,
a += b;[等价a = a + b;]
a -= b;[等价a = a - b;]
赋值运算符特点
- 顺序从右往左
- 赋值运算符的左边 只能是变量,右边可以是变量,常量,表达式
- 复合赋值运算符会进行类型的转换
三元运算符
条件表达式?表达式1:表达式2
运算规则:
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
口诀:[一灯大师:一真大师]
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
//解读:1.a > b 为 false
// 2.返回 b--,先返回b的值,然后在 b-1
// 3.返回的结果是99
使用细节
- 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换、强转换)
- 三元运算符可以转换为if…else
运算符优先级
运算符优先级表格:
优先级总结:
- 逗号,括号,花括号,分号
- 单目运算
- 算术运算符
- 位移运算符
- 比较运算符
- 逻辑运算符
- 三运运算符
- 赋值运算符