目录
1.什么是运算符
计算机的最基本的用途之一就是执行数学运算,比如:
int a = 10;
int b = 20;
a + b;
a < b;
上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。
作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。
2.算术运算符
1. 基本四则运算符:加减乘除模(+ - * / %)
int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数
注意:
- 都是二元运算符,使用时必须要有左右两个操作数
- int / int 结果还是int类型,而且会向下取整
- 做除法和取模时,右操作数不能为0
- % 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
- 两侧操作数类型不一致时,向类型大的提升
2. 增量运算符 += -= *= %=
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
System.out.println(a); // 输出2
a %= 3; // 相当于 a = a % 2
System.out.println(a); // 输出2
注意:只有变量才能使用该运算符,常量不能使用。
3. 自增/自减运算符 ++ --
int a = 1;
a++;//后置++是先使用变量原来值,表示式结束时给变量+1
++a;//前置++是先给变量+1,然后使用变量中的值
int b = 1;
System.out.println(b++);//后置++,所以输出2
int c = 1;
System.out.println(c++);//前置++,所以输出1
注意:
- 如果单独使用,【前置++】和【后置++】没有任何区别
- 如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式 结束时给变量+1
- 只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改
3. 关系运算符
关系运算符主要有六个: == != < > >= <= ,其计算结果是 true 或者 false 。
1. 相等运算符(==):比较两个操作数是否相等,如果相等则返回true,否则返回false。
2. 不等运算符(!=):比较两个操作数是否不相等,如果不相等则返回true,否则返回false。
3. 大于运算符(>):比较左操作数是否大于右操作数,如果是则返回true,否则返回false。
4. 小于运算符(<):比较左操作数是否小于右操作数,如果是则返回true,否则返回false。
5. 大于等于运算符(>=):比较左操作数是否大于等于右操作数,如果是则返回true,否则返回false。
6. 小于等于运算符(<=):比较左操作数是否小于等于右操作数,如果是则返回true,否则返回false。
这些关系运算符可以用于任何基本数据类型,如整数、浮点数、字符等,也可以用于对象的比较。
4.逻辑运算符
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。
Java的逻辑运算符包括与(&&)、或(||)和非(!)。
1. 与运算符(&&):如果两个操作数都为true,则结果为true;否则,结果为false。
例如:(a > 5 && b < 10) 表示当a大于5并且b小于10时,条件为真。2.
表达式1 | 表达式2 | 表达式3 |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
2.或运算符(||):如果两个操作数中至少有一个为true,则结果为true;否则,结果为false。
例如:(a > 5 || b < 10) 表示当a大于5或者b小于10时,条件为真。
表达式1 | 表达式2 | 表达式3 |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
3. 非运算符(!):用于取反操作,即将true变为false,将false变为true。
例如:!(a > 5) 表示当a不大于5时,条件为真。
表达式1 | 表达式2 |
---|---|
真 | 假 |
假 | 真 |
4.短路求值
例如:
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值.
这些逻辑运算符经常用于条件语句(如if语句和while循环)中,用于根据条件的真假来决定是否执行某段代码。
5.位运算符
Java位运算符用于对整数类型或整数类型的表达式的各个位进行操作。位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位 的每一位依次进行计算。
以下是Java中可用的位运算符:
1. 位与(&):对两个操作数的各个位进行AND操作,只有两个位都为1时结果才为1,否则为0。
例如:10 & 20
10的二进制 0 0 0 0 1 0 1 0 20的二进制 0 0 0 1 0 1 0 0
进行按位与(&)后的结果就是
结果为0
0 0 0 0 0 0 0 0
2. 位或(|):对两个操作数的各个位进行OR操作,只要一个位为1则结果为1,否则为0。
这里还是用上一个例子的两个数,方便对比:
10 | 20
10的二进制 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
20的二进制 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
进行按位或(|)后的结果就是
0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
结果为30
3. 位异或(^):对两个操作数的各个位进行XOR操作,相同位为0,不同位为1。
4. 左移(<<):将第一个操作数的各个位向左移动指定的位数,右侧用0填充。
5. 右移(>>):将第一个操作数的各个位向右移动指定的位数,左侧用原来的最左位填充。
6. 无符号右移(>>>):将第一个操作数的各个位向右移动指定的位数,左侧用0填充。
7. 取反(~):对操作数的各个位取反,即0变为1,1变为0。
这些位运算符通常用于对二进制数据进行操作,如位掩码、位标志和位操作等。
本人是Java小白,在学习的同时写博客进行整理和复习,如果对同样是小白的你有帮助的话,还请多多支持,一起进步,同样,如果您是大佬的话,如果我整理的有错误的话还请多多指正,谢谢大家。