系列文章专栏
文章目录
一、算术运算符
1.1 基本的算术运算符
运算 | 运算符表示 | 举例 | 结果 |
---|---|---|---|
正号 | + | +3 | 3 |
负号 | - | b=3;-b | -3 |
加 | + | 5+5 | 10 |
减 | - | 3-2 | 1 |
乘 | * | 2*3 | 6 |
除 | / | 6/2 | 3 |
取模(取余) | % | 7%5 | 2 |
自增(前):先自增1后运算 | ++ | a=2;b=++a | a=3;b=3 |
自增(后):先运算后自增1 | ++ | a=2;b=a++ | a=3;b=2 |
自减(前):先运算后取值 | – | a=2;b=–a | a=2;b=2 |
自减(后):先取值后运算 | – | a=2;b=a– | a=2;b=3 |
字符串连接 | + | “he"+“llo” | “hello” |
1.2 部分代码示例
1.2.1 除法
注意:运算顺序和规则(结果 int 型还是 double 型)
public class AirTest {
public static void main(String []args) {
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2; // 输出2
System.out.println(result1);
int result2 = num1 / num2 * num2; // 输出10
System.out.println(result2);
double result3 = num1 / num2; // 输出2.0
System.out.println(result3);
double result4 = num1 / (num2 + 0.0); // 输出2.4
System.out.println(result4);
double result5 = (double)num1 / num2; // 输出2.4
System.out.println(result5);
}
}
1.2.2 取模
注意:结果的符号与被模数符号一致,常用来判断能否整除
public class AirTest {
public static void main(String []args) {
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1); // 输出2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2); // 输出-2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3); // 输出2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4); // 输出-2
}
}
1.2.3 自增
注意:自增1不会改变变量本身的数据类型
public class AirTest {
public static void main(String []args) {
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " + a1 + ", b1 = " + b1); // 输出a1 = 11, b1 = 11
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " + a2 + ", b2 = " + b2); // 输出a2 = 11, b2 = 10
}
}
二、赋值运算符
2.1 基本赋值运算符
基本赋值运算符符号:=
说明:支持连续赋值
public class AirTest {
public static void main(String []args) {
int a1, b1;
a1 = b1 = 10; // 连续赋值
int a2 = 10, b2 = 20; // 逗号隔开
System.out.println("a1 = " + a1 + ", b1 = " + b1 + ", a2 = " + a2 + ", b2 = " + b2);
}
}
2.2 扩展赋值运算符
拓展的赋值运算符符号:+=, -=, *=, /=, %=,不会改变变量本身的数据类型
public class AirTest {
public static void main(String []args) {
// 变量实现加2的操作
int a1 = 10;
a1 = a1 + 2; // 非int型可能编译不通过
a1 += 2; // 更推荐
System.out.println("a1 = " + a1);
int n = 10;
n += (n++) + (++n); // n = n + (n++) + (++n)
System.out.println(n); //32
}
}
三、比较运算符
比较运算符:==,!=,>,<,>=,<=,instanceof
注意:比较运算符的结果都是boolean型,也就是要么是 true,要么是 false
四、逻辑运算符
- &—逻辑与:左边无论真假,右边都进行运算
- && —短路与:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算,更推荐使用
public class AirTest {
public static void main(String []args) {
boolean a1 = false;
int b1 = 10;
if(a1 & (b1++ > 0)){
System.out.println("可以");
}else{
System.out.println("不可以");
}
System.out.println(b1);
boolean a2 = false;
int b2 = 10;
if(a2 && (b2++ > 0)){
System.out.println("可以");
}else{
System.out.println("不可以");
}
System.out.println(b2); // 已知结果,右边不参与运算
}
}
- | —逻辑或:左边无论真假,右边都进行运算
- || —短路或:如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算,同上
- !—逻辑非:!a,与a原本相反
- ^ —逻辑异或:a^b,ab不同则为真
五、位运算符(了解)
运算 | 运算符表示 | 举例 | 结果 | 说明 |
---|---|---|---|---|
左移 | << | 3<<2 | 12 | 在一定范围内,每向左移一位,相当于 * 2 |
右移 | >> | 3>>1 | 1 | 在一定范围内,每向右移一位,相当于 / 2,空位用1补 |
无符号右移 | >>> | 3>>>1 | 1 | 高位空出的的用0补 |
与 | & | 12&5 | 4 | 二进制各位,同1则1 |
或 | 同逻辑或 | 12或5(用符号) | 13 | 二进制各位,有1则1 |
异或 | ^ | 12^5 | 9 | 二进制各位,不同则1 |
取反 | ~ | ~6 | -7 | 取反 |
六、三元运算符
格式:(条件表达式)? 表达式1 : 表达式2;
说明:条件表达式结果为布尔型,真执行表达式1,假执行表达式2;表达式1、2为同种类型
注意:三元运算符可嵌套使用,可改写为 if-else 语句,反之不一定能改写
public class AirTest {
public static void main(String []args) {
int a1 = 15;
int b1 = 15;
String str = (a1 > b1)? "a1大" : ((a1 == b1)? "a1和b1相等" : "b1大"); //三元运算符可以嵌套
System.out.println(str);
}
}
七、运算符的优先级
运算级从高到低依次是(不需要记忆):
- () . ; {} ,
- ++ – ~ !
- / % *
- 加 减
- << >> >>>
- <= >= < > instanceof
- == !=
- &
- ^
- |
- &&
- ||
- ? :
- = *= /= %=