算术运算符
运算符 | 描述 |
+ | 两数相加 |
- | 两数相减 |
* | 两数相乘 |
/ | 两数相除 |
% | 取模,返回两数相除的余数 |
++ | 自加一 |
- - | 自减一 |
public class User { public static void main(String[] args) { int a = 20; int b = 10; System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b); System.out.println(b % a); } }
30 10 200 2 10
++,- -运算符
当++、- -出现在变量之前,先自加、自减1,再做赋值运算
public class User { public static void main(String[] args) { int a = 10; int b = ++a; System.out.println(a);// 11 System.out.println(b);// 11 } }
当++,- -出现在变量之后,先做赋值运算,再自加、自减1
public class User { public static void main(String[] args) { int a = 10; int b = a++; System.out.println(b);// 10 System.out.println(a);// 11 } }
扩展
+运算符有两个作用
①求和
public class User { public static void main(String[] args) { System.out.println(3 + 4);// 7 } }
②字符串拼接
public class User { public static void main(String[] args) { System.out.println("Hello" + "Java" + "World");// HelloJavaWorld } }
关系运算符
public class User { public static void main(String[] args) { int a = 20; int b = 10; System.out.println(a == b); System.out.println(a != b); System.out.println(a > b); System.out.println(a < b); System.out.println(a <= b); System.out.println(a >= b); } }
false true true false false true
逻辑运算符
运算符 | 描述 | 结果 |
& | 与 | 两边都为True,结果才为True |
│ | 或 | 有一边为True,结果就为True |
! | 非 | 真值变假,假值变真 |
&& | 逻辑与 | 两边都为True,结果才为True |
││ | 逻辑或 | 有一边为True,结果就为True |
public class User { public static void main(String[] args) { boolean a1 = true; boolean a2 = false; System.out.println(a1 && a2); System.out.println(a1 || a2); System.out.println(!a1); } }
false true false
与&和逻辑与&&
public class User { public static void main(String[] args) { // 与& int a = 0; int b = 1; // 当左边表达式为false,右边的表达式依旧会执行 System.out.println(a > b & b > a++);// false System.out.println(a); // 1 // 逻辑与&& int c = 0; int d = 1; // 当左边的表达式为false,右边的表达式不执行(短路现象) System.out.println(c > d && d > c++);// false System.out.println(c); // 0 } }
或|和逻辑或||
public class User { public static void main(String[] args) { // 或| int a = 0; int b = 1; // 当左边表达式为true,右边的表达式依旧会执行 System.out.println(a < b | b > a++);// true System.out.println(a); // 1 // 逻辑或|| int c = 0; int d = 1; // 当左边的表达式为true,右边的表达式不执行(短路现象) System.out.println(c < d || d > c++);// true System.out.println(c); // 0 } }
总结
与&和或|要对所有条件都进行判断(无论左边是真假,右边都会执行)
逻辑与 &&当左边的表达式为false,右边的表达式不执行
逻辑或 || 当左边的表达式为true,右边的表达式不执行
什么时候使用&&,什么时候使用&
从效率方面来说,&&比&的效率高一些。
因为与&不管第一个表达式结果是什么,第二个表达式一定会执行。
大部分情况下都建议使用短路与&&,只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择与&。
赋值运算符
运算符 | 描述 |
= | 直接赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 乘后赋值 |
/= | 除后赋值 |
%= | 取模后赋值 |
public class User { public static void main(String[] args) { int a = 2; int b = 1; System.out.println(a += b);//a = a + b System.out.println(a -= b);//a = a - b System.out.println(a *= b);//a = a * b System.out.println(a /= b);//a = a / b System.out.println(a %= b);//a = a % b } }
3 2 2 2 0
条件运算符
表达式1?表达式2:表达式3
先判断表达式1的值,若为真则将表达式2的值做为整个表达式的值;若为假则将表达式3的值做为整个表达式的值。
举个栗子:判断a和b的大小,a>b如果成立max=a的值,不成立则max=b的值
public class User { public static void main(String[] args) { int a = 1, b = 2; int max; max = a > b?a:b; System.out.println(max); } }
运算符优先级
✅Java中用到的运算符除了上面介绍的常用的赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符以外,还有其他的运算符。当一个表达式出现多种运算符符号,会按照运算符的优先级来决定运算顺序,Java中运算符优先级见下表
运算符 | 描述 | 优先级 |
[] () . , ; | 分隔符 | 1 |
Instanceof ++ - - ! | 对象归类、自增自减、非运算 | 2 |
* / % | 算术乘除运算 | 3 |
+ - | 算术加减运算 | 4 |
>> << >>> | 移位运算 | 5 |
< <= > >= | 大小关系运算 | 6 |
== != | 相等关系运算 | 7 |
& | 按位与运算 | 8 |
^ | 按位异或运算 | 9 |
│ | 按位或运算 | 10 |
&& | 逻辑与运算 | 11 |
││ | 逻辑或运算 | 12 |
? : | 三目条件运算 | 13 |
= += -= *= /= &= | 赋值运算 | 14 |
结束语🏆
🔥推荐一款模拟面试、刷题神器网站
点击跳转进入网站
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
3、大厂笔试真题:字节跳动、美团、百度、腾讯…