Java基础-02
1. 运算符
1.1 算术运算符
1.1.1 运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合Java语法的式子
不同运算符连接的表达式体现的是不同类型的表达式
1.1.2 算术运算符
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
注意:
/和%的区别:两个数据做除法,/ 取结果的商,% 取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
1.1.3 字符的 “+”操作
char类型参与算术运算,使用的是计算机底层对应的十进制数值。
‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加
‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加
‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double
1.1.4 字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
注意:在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执
行。
1.2 赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
注意:
扩展的赋值运算符隐含了强制类型转换。
short s = 10;
s = s + 10; // 此行代码报错,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度
-------------------------------
s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);
1.3 自增自减运算
注意事项:
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作
1.4 关系运算符
关系运算符有6种:
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
1.5 逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
短路逻辑运算符:
- 逻辑与&,无论左边真假,右边都要执行。
- 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
1.6 三元运算符
三元运算符语法格式:
关系表达式 ? 表达式一 : 表达式二
- 解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。
- 其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
int a = 10;
int b = 20;
int c = a > b ? a : b;
三元运算符案例:
案例一:
public class OperatorTest01{
public static void main(String [] args){
//需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是否相同。
//定义两个变量用于保存老虎的体重,单位为kg。
int wei1 = 180;
int wei2 = 200;
//用三元运算符实现老虎体重的判断
boolean b = wei1 ==wei2 ? true : false;
System.out.println("b:" + b);
}
}
案例二:
public class OperatorTest02{
public static void main(String [] args){
//定义三个变量用于保存和尚的身高,单位为cm
int hei1 = 176;
int hei2 = 200;
int hei3 = 180;
//用三元运算符获取前两个和尚的较高身高,并用临时变量保存
int tempHei = hei1 > hei2 ? hei1 : hei2;
//用三元运算符获取临时身高与第三个和尚的较高身高
int maxHei = tempHei > hei3 ? tempHei : hei3;
System.out.println("maxHeight:" + maxHei);
}
}