1. 运算符介绍
1.1 运算符介绍
- 运算符是一种特殊的符号,用于表示数据的运算、赋值和比较。
- 常用运算符
算数、关系(比较运算符)、逻辑、赋值、位运算符、三元。
2. 算数运算符
-
2.1 介绍
- 主要是对数值类型的变量进行运算。
- 重点
| 运算符 | 运算 | 范例 | 结果 |
| :—: | :—: | :—: | :—: |
| ++ | 自增(前):先运算再取值| a = 2;b = ++a;| a = 3; b = 3|
||自增(后):先取值再运算|a = 2; b = a++;| a = 3; b =2|
| – | 自减(前):先运算再取值| a = 2; b= --a;| a = 1; b = 1|
||自减(后):先取值再运算|a = 2; b = a–;| a = 1; b =2| -
2.2 重点注意
- 除法注意
double d1 = 10 / 4; //结果是2.0 而不是2.5。
- 取余的本质
底层取模公式 a % b = a - (强转int)a / b * b
int a1 = 10 % 3; // a1 = 1;
int a2 = -10 % 3;// a2 = -1;
int a3 = 10 % -3; // 结果还是1;
// 按照公式 10 % -3 = 10 - 10 / (-3) * (-3)
- 自增自减
如果自增自减独自使用等价于i = i + 1 。
作为表达式使用:前++ :先自增后赋值,后++ : 先赋值后自增。
int n1 = 8;
int n2 = ++n1; // 等价于①n1 = n1 + 1; ② n2 = n1;
int i = 1;
i = i ++;
System.out.println(i); // 请问: i 等于多少?
// 解析: 在jvm执行时,遇到i = i ++,会使用一个临时变量, 执行过程如下:
int temp = i; // 使用临时变量,将i赋给它。
i = i + 1; // i 加一
i = temp; // 将temp的值赋给 i。 所以结果是1.
3. 关系运算符
4. 逻辑运算符
-
4.1 介绍
- 用于连接多个条件(多个关系表达式)结果也是boolean
-
4.2 包含成员
- 与(&):全真为真,有假为假。
- 或 (|): 有真为真,全假为假。
- 短路与,只要前边表达式为假后边的表达式就不执行。
- 短路或,只要前边表达式为真后边的表达式就不执行。
- 异或 (^): 相同为假,不同为真。 都是true或都是false为假,否则就是真的。
-
4.3 练习题
int x = 5;
int y = 5;
if(x++ == 6 & ++y = 6){
x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=6,y=6
int x = 5;
int y = 5;
if(x++ == 6 && ++y = 6){
x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=6,y=5
int x = 5;
int y = 5;
if(x++ == 5 | ++y = 5){
x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=11,y=6
int x = 5;
int y = 5;
if(x++ == 5 || ++y = 5){
x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=11,y=5
练习二
boolean x = true;
boolean y = false;
int z = 46;
if( (z ++ == 46) && (y = true) ) z++;
if( (x = false) || (++ z = 49) ) z++;
System.out.println("z = "+z ); // 48
5. 赋值运算符
int a = 20;
boolean b =false;
if( b = true){
System.out.println("b = "+b ); // b = true
}
n += 1; // n = n +1;
- 从右向左
int num = a + b + c;
- 赋值运算符会进行类型转换
byte b = 2;
b += 2; // 编译会通过。 相当于 b = (byte)(b + 2);
// 同样的 b++也会编译通过。
6. 三元运算符
条件表达式 ? 执行语句1 : 执行语句2;
int result = 2>3 ? 2+3 : 3-2;
- 可以和if–else–之间相互转换。
7. 运算符优先级
操作 |
---|
(),{} 等 |
单目运算 ++ --等 |
算数运算符 |
位移运算符 |
比较运算符 |
逻辑运算符 |
三元运算符 |
赋值运算符 |