1.算数运算符
1.1 基本四则运算符:+ - * / %(加,减,乘,除,模)
int a = 7; int b = 2; System.out.println(a + b); // 9 System.out.println(a - b); // 5 System.out.println(a * b); // 14 System.out.println(a / b); // 3 System.out.println(a % b); //1 相当于数学中的余数
注意:
- 它们都是二元运算符,使用的时候两边都需要有操作数(数字);
- / 和 % 右边操作数不能为零(参考数学分母不能为零);
- 当/ 和 % 右边的操作数为小数的时候,结果也为小数;
- 当两边操作数不一致的时候,将发生整型提升;
int a = 7; System.out.println(a + 1.0); // 8.0 // a为int类型,1.0为double类型,当两者计算的时候,a将提升为double类型
1.2 增量运算符: += -= *= %=
int a = 4; a += 2; //相当于a = a + 2; System.out.println(a);// 6 a -= 2; //相当于a = a - 2; System.out.println(a);// 4 a *= 2; //相当于a = a * 2; System.out.println(a);// 8 a /= 2;//相当于a = a / 2; System.out.println(a);// 4 a %= 2;//相当于a = a % 2; System.out.println(a);// 0
注意:
- 它们都是二元运算符;
- 只有变量才能使用该运算符,常量不能使用。
1.3 自增/自减运算符 ++ --
int a = 1; a++; //a = 2; System.out.println(++a); //a = 3;打印 3 前置++,先++,后使用 System.out.println(a++); //打印 3 a = 4;后置++,先使用,后++ a--; //a = 3; System.out.println(a); //打印3
注意:
- 前置与后置是不同的;
- ++是给变量加1,--是给变量减1;
- 只有变量才能使用,常量不能使用;
2.关系运算符
关系运算符主要六个: == != < > <= >=
int a = 1; int b = 2; System.out.println(a > b); //false System.out.println(a < b); //true System.out.println(a >= b); //false System.out.println(a <= b); //true System.out.println(a == b); //false System.out.println(a != b); //true
注意:
- = 表示赋值, == 表示相等;
- 不能 a < b < 4,连续比较两次;
- 其比较结果都为 Boolean类型,即true 或 false;
3.逻辑运算符
逻辑运算符主要三个:&& || !
3.1 &&
表达式1 | 表达式2 | 结果 |
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 |
假 |
int a = 1; int b = 2; System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真 System.out.println(a == 1 && b > 100); // 左为真 但 右为假 则结果为假 System.out.println(a > 100 && b == 2); // 左为假 但 右为真 则结果为假 System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假
3.2 ||
表达式1 | 表达式2 | 结果 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 |
假 |
int a = 1; int b = 2; System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真 System.out.println(a == 1 || b > 100); // 左为真 但 右为假 则结果也为真 System.out.println(a > 100 || b == 2); // 左为假 但 右为真 则结果也为真 System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假
3.3 !
表达式 | 结果 |
真 | 假 |
假 | 真 |
int a = 1; System.out.println(!(a == 1)); // a == 1 为true,取个非就是false System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
4.位运算符
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
4.1 按位与 &:如果两个数的二进制都为1为1,或者为0
1. int a = 10; 2. int b = 20; 3. System.out.println(a & b)
10的二进制:0000 1010
20的二进制:0001 0100
则按位与为:0000 0000
转换十进制:0
4.1 按位或 |:如果两个数的二进制都为0为0,或者为1
1. int a = 10; 2. int b = 20; 3. System.out.println(a | b);
10的二进制:0000 1010
20的二进制:0001 0100
则按位或为:0001 1110
转换十进制:30
4.3 按位取反:这个数二进制0转为1,1转为0
1. int a = 10; 2. System.out.println(~a);// -11
注意:取反之后的结果是十六进制数,而在上面的程序中默认输出是十进制;
4.4 按位异或:两个数二进制相同位为0,不同为1
1. int a = 10; 2. int b = 20; 3. System.out.println(a ^ b);
10的二进制:0000 1010
20的二进制:0001 0100
则按位异或:0001 1110
转换十进制:30
注意:
- 两个相同的数字异或都为零;
- 任何一个数字异或零都为本身;
- 在有的情况下,将运算符 ^ 作为求幂运算符,要注意区分;
5.条件运算符
条件运算符:表达式1 ?表达式2 :表达式3
1. int a = 10; 2. int b = 20; 3. int max = a > b ? a : b; 4. //a > b是否成立,成立 a,或者 b;
注意:
- 表达式不能单独存在,其产生的结果必须要被使用。
1. int a = 1; 2. int b = 2; 3. a > b ? a : b;//报错
- 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
6.运算符的优先级
优先级 | 运算符 |
1 | . [ ] ( ) |
2 | ++ – ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | l |
11 | && |
12 | ll |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= l= |
是不是有很多,当然我们不需要硬记,多多使用就会全部记着了,对于不了解的,有歧义的我们也可以加上括号(),和数学中的一样。