10.自增自减运算符
分类:
++ 自增运算符
-- 自减运算符
++:就是把变量里面的值+1
--:就是把变量里面的值-1
使用方式:
- 放在变量的前面,我们叫做先++。 比如:++a
- 放在变量的后面,我们叫做后++。 比如:a++
注意点:
不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。
案例:
//++ int a = 10; a++;//就是让变量a里面的值 + 1 System.out.println(a);//11 ++a;//就是让变量a里面的值 + 1 System.out.println(a);//12
自增自减运算符的应用场景:
某些情况下,变量需要进行加1或者减1的时候使用。
比如:过生日多一岁,就用到了自增运算符。
比如:购物商场中,选择商品数量,也用到了自增或者自减运算符。
比如:统计很多数据中,有多少个数据满足要求,也用到了自增运算符。
11.赋值运算符
最为常用的: =
运算过程:就是把等号右边的结果赋值给左边的变量
案例:
public class OperatorDemo6 { public static void main(String[] args) { //1.最为简单的赋值运算符用法 int a = 10;//就是把10赋值给变量a System.out.println(a); //2.如果等号右边需要进行计算。 int b = 20; int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量 System.out.println(c); //3.特殊的用法 a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量 System.out.println(a);//20 } }
12.扩展赋值运算符
分类:
+=、-=、*=、/=、%=
运算规则:
就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。
案例:
public class OperatorDemo7 { public static void main(String[] args) { //扩展赋值运算符 int a = 10; int b = 20; a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响 // 相当于 a = a + b; System.out.println(a);//30 System.out.println(b);//20 } }
注意点:
扩展的赋值运算符中隐层还包含了一个强制转换。
以+=为例。
a += b ;实际上相当于 a = (byte)(a + b);
public class OperatorDemo8 { public static void main(String[] args) { byte a = 10; byte b = 20; //a += b; a = (byte)(a + b); System.out.println(a);//30 } }
13.关系运算符
又叫比较运算符,其实就是拿着左边跟右边进行了判断而已。
分类:
| 符号 | 解释 |
| == | 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
| != | 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
| > | 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false |
| >= | 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
| < | 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false |
| <= | 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
注意点:
- 关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
- 在写==的时候,千万不要写成=
14.逻辑运算符
& 和 | 的使用:
&:逻辑与(而且)
两边都为真,结果才是真,只要有一个为假,那么结果就是假。
|:逻辑或(或者)
两边都为假,结果才是假,只要有一个为真,那么结果就是真。
代码示例:
// & //两边都是真,结果才是真。 System.out.println(true & true);//true System.out.println(false & false);//false System.out.println(true & false);//false System.out.println(false & true);//false System.out.println("==================================="); // | 或 //两边都是假,结果才是假,如果有一个为真,那么结果就是真。 System.out.println(true | true);//true System.out.println(false | false);//false System.out.println(true | false);//true System.out.println(false | true);//true
使用场景:
根据固定的场景,来选择使用&还是使用|
- 用户登录。
用户名输入正确 & 密码输入正确
因为只有用户名和密码同时都正确了,那么才能成功登录,只要有一个失败了都不行。
使用技巧:
当我们需要同时满足左边和右边两种情况时,可以使用且 - 丈母娘选女婿
丈母娘:女婿啊,你要么买个房子,要么买辆车。就可以把我的小棉袄穿走了。
买个房子 | 买辆车
两个条件中,只要满足其中一个,就可以穿走小棉袄了。
使用技巧:
当两种条件只要满足其中一个的时候,可以使用或
^(异或)的使用:
在以后用的不多,了解一下即可。
计算规则:如果两边相同,结果为false,如果两边不同,结果为true
代码示例:
//^ //左右不相同,结果才是true,左右相同结果就是false System.out.println(true ^ true);//false System.out.println(false ^ false);//false System.out.println(true ^ false);//true System.out.println(false ^ true);//true
!(取反)的使用:
是取反,也叫做非。
计算规则:false取反就是true,true取反就是false
温馨提示:取反最多只用一个。
代码示例:
System.out.println(!false);//true System.out.println(!true);//false System.out.println(!!false);//注意点:取反最多只用一个。
15.短路逻辑运算符
分类: && ||
&&:
运算结果跟&是一模一样的,只不过具有短路效果。
||:
运算结果跟|是一模一样的。只不过具有短路效果。
逻辑核心:
当左边不能确定整个表达式的结果,右边才会执行。
当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。
举例:
- 用户登录案例
用户名正确 & 密码正确
如果使用一个&,不管用户名是否正确都会去验证密码。
思考:
如果用户名输入正确了,那么我们再判断密码是否正确,是符合业务逻辑的。
但是如果用户名输入错误了,那么现在还有必要去比较密码吗?没有不要了。
如果使用一个&,那么左边和右边不管什么情况下,都会执行。
用户名正确 && 密码正确
如果用户名输入正确了,那么才会验证密码是否输入正确。
如果用户名输入错误了,那么就不会再去验证密码是否正确,最终的结果直接为false。从而提高了程序运行的效率。
- 丈母娘选女婿
有房 | 有车
首先先看看有没有房,发现有,然后再去看看有没有车。
思考:
既然都有房子,干嘛还要去看车呢?多此一举。
有房 || 有车
首先先看看有没有房,如果有,那么右边就不执行了。最终的结果直接为true。
如果没有房子,才会去看右边有没有车。
总结:
&& 和 & 、||和|的运行结果都是一模一样的。
但是短路逻辑运算符可以提高程序的运行效率。
建议:
最为常用: && || !
16.三元运算符
又叫做:三元表达式或者问号冒号表达式。
格式:
关系表达式 ? 表达式1 :表达式2 ;
计算规则:
- 计算关系表达式的值。
- 如果关系表达式的值为真,那么执行表达式1。
- 如果关系表达式的值为假,那么执行表达式2。
注意点:
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
案例:
public class OperatorDemo12 { public static void main(String[] args) { //需求:求两个数的较大值 int a = 10; int b = 20; //格式:关系表达式 ? 表达式1 : 表达式2 ; //注意点: //三元运算符的最终结果一定要被使用。 //要么赋值给一个变量,要么直接输出。 int max = a > b ? a : b ; System.out.println(max); System.out.println(a > b ? a : b); } }
17.练习1-两只老虎
需求:
动物园里有两只老虎,两只老虎的体重分别为通过键盘录入获得,
请用程序实现判断两只老虎的体重是否相同。
代码示例:
//1.获取两只老虎的体重 Scanner sc = new Scanner(System.in); System.out.println("请输入第一只老虎的体重"); int weight1 = sc.nextInt(); System.out.println("请输入第二只老虎的体重"); int weight2 = sc.nextInt(); //2.利用三元运算符求出最终结果 String result = weight1 == weight2 ? "相同" : "不相同"; System.out.println(result);
18.练习2-求三个数的最大值
需求:
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm。
请用程序实现获取这三个和尚的最高身高。
代码示例:
//1.定义三个变量记录和尚的身高 int height1 = 150; int height2 = 210; int height3 = 165; //2.利用三元运算符求出两个数中的较大值。 int temp = height1 > height2 ? height1 : height2; //3.求出最终的结果 int max = temp > height3 ? temp : height3; System.out.println(max);
19.运算符的优先级
在Java中涉及了很多的运算符,每一种运算符都有各自的优先级。但是这些优先级不需要记忆。
咱们只要知道其中一点:
小括号优先于所有。