运算符
1.算数运算符
1.1运算符和表达式
- 运算符:对常量或者变量进行操作的符号
- 表达式:用运算符爸常量或者变量连接起来符合Java语法的式子就可以称为表达式
不同运算符连接的表达式体现的是不同类型的表达式。
- 举例说明:int a = 10;
int b = 20;
int c = a + b;
+:是运算符,并且是算数运算符
a +b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
1.2算数运算符
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 参考小学一年级数学课本 |
- | 减 | 参考小学一年级数学课本 |
* | 乘 | 参考小学二年级数学课本 |
/ | 除 | 整数/整数只会得到整数,若果想要得到小数,必须要有浮点数的参与 |
% | 取余 | 获取的是两个数据做除法的余数 |
1.3字符的“+”操作
拿字符在计算机底层对应的数值来进行计算的
- 算数表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
-
byte类型,short类型和char类型被提升到int类型
-
整个表达式的类型自动提升到表达式中最高级操作同样的类型
等级顺序:byte,short,char—>int—>long—>float—>double
1.4字符串的“+”操作
- 当“+”操作出现字符串时,这个“+”是字符串连接符,而不是算数运算
范例:
public static void main(String[] args) {
System.out.println("大源源"+"孔也吉娜");
System.out.println("大源源孔也吉娜"+666);
}
运行结果为:孙宗源孔也吉娜
孙宗源孔也吉娜666
- 在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算数运算。当连续进行“+”操作时,从左到右逐个执行。
范例:
public static void main(String[] args) {
System.out.println(1 + 99 + "年良人");
}
运行结果为:100年良人
2.赋值运算符
2.1赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a = 10,将10赋值给变量a |
+= | 加后赋值 | a += b,将a+b的值给a |
-= | 减后赋值 | a -= b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a✖️b的值给a |
/= | 除后赋值 | a /= b,将a➗b的值给a |
%= | 取余后赋值 | a%=b,将a➗b的余数给a |
注意事项:
扩展的赋值运算符隐含了强制类型转换。
3.自增自减运算符
3.1自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值+1 |
– | 自减 | 变量的值-1 |
注意事项:
-
++和–既可以放在变量的后面,也可以放在变量的前面
-
单独使用的时候,++和–无论是放在前面还是后面,结果是一样的。
-
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前面,先拿变量做++或者–,后拿变量参与与操作。
4.关系运算符
4.1关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
千万不要把“==”误写成“=”
5.逻辑运算符
5.1逻辑运算符概述
在数学中,一个数据x,大于3,小于6,我们可以这样来表示:3<x<6。
在Java中,需要把上面的式子先进行拆解,再进行合作表达。
- 拆解为:x>3和x<6
- 合并后:x>3&&x<6
&&其实是一个逻辑运算符。
我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符。
当然,逻辑运算符也可以直接连接布尔类型的常量或者变量。
5.2逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
5.3短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是又短路效果 |
|| | 短路或 | 作用和|形同,但是有短路效果 |
注意事项:
- 逻辑与&,无论左边真假,右边都要执行
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
6.三元预算符
6.1三元运算符
- 格式:关系表达式?表达式1:表达式2;
- 范例:a > b ? a : b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
public static void main (String[] args){
//定义两个变量
int a = 10;
int b = 20;
//获取两个数据中的较大值
int max = a > b ? a:b;
//输出结果
System.out.println("max:"+max);
}
输出结果为:max:20
6.2案例一
/*
两只老虎
需求:
动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序判断两只老虎的体重是否相同。
*/
public static void mian (String[] args){
//1.定义两个变量用于保存老虎的体重,单位为kg,这里仅仅体现数值即可
int weight1 = 180;
int weight2 = 200;
//2.用三元运算符实现老虎体重的判断,体重相同,返回true,否则,返回false
boolean b == weight1 == weight2 ? true : false;
//输出结果
System.out.println("b:"+b);
}
6.3案例二
/*三个和尚
需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
*/
public static void main (String[] args){
//1.定义三个变量用于保存和尚的身高,单位cm,这里仅仅体现数值
int height1 = 150;
int height2 = 210;
int height3 = 165;
//2.用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。
int tempHeight = height1 > height2 ? height1 : height2;
//用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存
int maxHeight = tempHeight > height3 ? tempHeight : height3;
//4.输出结果
System.out.println("maxHeight:"+maxHeight);
}