目录
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。
int a = 10;
int b = 20;
System.out.println(a & b);
10的二进制:0000 1010
20的二进制:0001 0100
则按位与为:0000 0000
转换十进制:0
4.1 按位或
|:如果两个数的二进制都为0为0,或者为1。
int a = 10;
int b = 20;
System.out.println(a | b);
10的二进制:0000 1010
20的二进制:0001 0100
则按位或为:0001 1110
转换十进制:30
4.3 按位取反
~:这个数二进制0转为1,1转为0
int a = 10;
System.out.println(~a);// -11
注意:取反之后的结果是十六进制数,而在上面的程序中默认输出是十进制;
4.4 按位异或
^:两个数二进制相同位为0,不同为1
int a = 10;
int b = 20;
System.out.println(a ^ b);
10的二进制:0000 1010
20的二进制:0001 0100
则按位异或:0001 1110
转换十进制:30
注意:
- 两个相同的数字异或都为零;
- 任何一个数字异或零都为本身;
- 在有的情况下,将运算符 ^ 作为求幂运算符,要注意区分;
5.条件运算符
条件运算符:表达式1 ?表达式2 :表达式3
int a = 10;
int b = 20;
int max = a > b ? a : b;
//a > b是否成立,成立 执行a,不成立执行b;
注意:
- 表达式不能单独存在,其产生的结果必须要被使用。
int a = 1; int b = 2; a > b ? a : b;//报错
- 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
6.运算符的优先级
优先级 | 运算符 |
---|---|
1 | . [ ] ( ) |
2 | ++ – ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | l |
11 | && |
12 | ll |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= l= |
是不是有很多,当然我们不需要硬记,多多使用就会全部记着了,对于不了解的,有歧义的我们也可以加上括号(),和数学中的一样。