- 1.概述
- 2.算术运算符
- 3.自增自减运算符
- 4.关系运算符
- 5.逻辑运算符
- 6.赋值运算符
- 7.条件运算符
- 附:Java运算符优先级
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
- 位运算符
2.算术运算符
| 操作符 | 描述 |
|---|---|
| + | 相加运算符两侧的值 |
| - | 左操作数减去右操作数 |
| * | 相乘操作符两侧的值 |
| / | 左操作数除以右操作数 |
| % | 左操作数除以右操作数的余数(计算公式:a-a/b*b)(当a是一个小数时,公式:a-(int)a/b*b) |
| ++ | 操作数的值增加1 |
| – | 操作数的值减少1 |
3.自增自减运算符
前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算
后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
示例:
// 自增自减运算符 int a = 10; int b = 20; int c = a++; int d = ++b; System.out.println(c); System.out.println(d); ---------------------------- 输出: 10 21
面试真题:
1.阅读以下代码,该代码将输出什么?
int i = 1; i = i++; System.out.println(i); ----------------------------- 输出: 1 原因:规则使用临时变量,temp = i; i = i + 1; i = temp; 导致i的值还是1
2.阅读以下代码,该代码将输出什么?
int j = 1; j = ++j; System.out.println(j); ------------------------- 输出: 2
4.关系运算符
| 运算符 | 描述 |
|---|---|
| == | 检查如果两个操作数的值是否相等,如果相等则条件为真 |
| != | 检查如果两个操作数的值是否相等,如果值不相等则条件为真 |
| > | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真 |
| < | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真 |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真 |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真 |
5.逻辑运算符
| 操作符 | 描述 |
|---|---|
| && | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真 |
| ll | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真 |
| ! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false |
真值表:
有时代码中会出现非短路逻辑运算符的写法(单个&或|),他们的区别是:如果第一个操作数已经可以判断结果,那么短路逻辑运算符将跳过第二个操作数,而非短路逻辑运算符则不会跳过,效率较低
6.赋值运算符
下面是Java语言支持的赋值运算符:
| 操作符 | 描述 |
|---|---|
| = | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
| += | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
| -= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
| *= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
| /= | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
| (%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
| <<= | 左移位赋值运算符 |
| >>= | 右移位赋值运算符 |
| &= | 按位与赋值运算符 |
| ^= | 按位异或赋值操作符 |
| l= | 按位或赋值操作符 |
示例:
// 赋值运算符 int k = 1; int l = 2; k += l; System.out.println(k); --------------------- 输出: 3
复合赋值运算符底层会进行一个强制的类型转换,所以以下代码是正确的:
byte m = 1; m += 2; System.out.println(m);
7.条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
示例:
// 三元运算符 int n , o; n = 10; // 如果 n 等于 1 成立,则设置 o 为 20,否则为 30 o = (n == 1) ? 20 : 30; System.out.println( "Value of o is : " + o ); ------------------------------- 输出: Value of o is : 30
底层其实是if-else语句
附:Java运算符优先级
当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。



