算术运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
+ | 加法 | A + B | 将操作数A与操作数B相加,得到它们的和。 |
- | 减法 | A - B | 从操作数A中减去操作数B,得到它们的差。 |
* | 乘法 | A * B | 将操作数A与操作数B相乘,得到它们的积。 |
/ | 除法 | A / B | 将操作数A除以操作数B,得到它们的商 (在求取 A 除以 B 的余数时,除数 B 不能为0。如果 B 为0,则会抛出 ArithmeticException 异常)。 |
% | 取余 | A % B | 计算操作数A除以操作数B的余数,即A对B取余的结果 (在进行 A 除以 B 的除法运算时,除数 B 不能为0。如果 B 为0,则会抛出 ArithmeticException 异常。但在浮点数除法中,如果除数为0,结果将会返回正无穷大、负无穷大或 NaN (不是一个数字))。 |
++ | 自增 | i++ | 将操作数i的值增加1,然后返回增加前的值。 |
– | 自减 | i– | 将操作数i的值减少1,然后返回减少前的值。 |
++ | 前缀递增 | ++i | 将操作数x的值增加1,然后返回增加后的值。 |
– | 前缀递减 | –i | 将操作数i的值减少1,然后返回减少后的值。(如果使用自增或自减运算符对超出有效索引范围的索引进行操作,会抛出数组索引越界异常(ArrayIndexOutOfBoundsException)。这是因为操作数超出了列表的有效范围,无法访问或修改不存在的元素。) |
关系运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
== | 等于 | A == B | 判断操作数A是否等于操作数B,如果相等则返回true,否则返回false。 (只适用于值比较,同时可能由于浮点数的精度问题,在比较时会导致不准确的结果) |
!= | 不等于 | A != B | 判断操作数A是否不等于操作数B,如果不相等则返回true,否则返回false。 |
> | 大于 | A > B | 判断操作数A是否大于操作数B,如果A大于B则返回true,否则返回false。 |
< | 小于 | A < B | 判断操作数A是否小于操作数B,如果A小于B则返回true,否则返回false。 |
>= | 大于等于 | A >= B | 判断操作数A是否大于等于操作数B,如果A大于等于B则返回true,否则返回false。 |
<= | 小于等于 | A <= B | 判断操作数A是否小于等于操作数B,如果A小于等于B则返回true,否则返回false。 |
逻辑运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
&& | 逻辑与 | A && B | 逻辑与操作符用于判断两个布尔表达式的结果。当且仅当两个操作数都为true时,结果才为true;否则,结果为false。如果第一项A就是False,那么就直接终止,不再查看B值 |
|| | 逻辑或 | A || B | 逻辑或操作符用于判断两个布尔表达式的结果。当两个操作数中至少有一个为true时,结果为true;否则,结果为false。如果第一项A就是True,那么就直接终止,不再查看B值 |
! | 逻辑非 | !A | 逻辑非操作符用于取反一个布尔表达式的结果。如果操作数为true,则结果为false;如果操作数为false,则结果为true。 |
位运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
& | 按位与 | A & B | 对于每个对应的位,只有当两个操作数的对应位都为1时,结果才为1。 |
| | 按位或 | A | B | 对于每个对应的位,只要两个操作数的对应位之一为1,结果就为1。 |
^ | 按位异或 | A ^ B | 对于每个对应的位,当两个操作数的对应位不相同时,结果为1;否则,结果为0。 |
~ | 按位取反 | ~A | 对于每个对应的位,按位取反运算符将0变为1,将1变为0。 |
<< | 左移 | A << B | 将操作数A的所有位向左移动B位,右侧用0填充。左移B位相当于乘以2的B次方。 |
>> | 右移 | A >> B | 将操作数A的所有位向右移动B位,若操作数为正数则左侧用0填充,若操作数为负数则左侧用1填充。右移B位相当于除以2的B次方。 |
>>> | A>>>B | 无符号右移 | 将操作数A的所有位向右移动B位,无论正负数,左侧都用0填充。右移B位相当于无符号除以2的B次方。 |
赋值运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
= | 赋值 | A = B | 将操作数B的值赋给操作数A。 |
+= | 加法赋值 | A += B | 将操作数A与操作数B相加的结果赋给操作数A。等效于A = A + B。 |
-= | 减法赋值 | A -= B | 将操作数A减去操作数B的结果赋给操作数A。等效于A = A - B。 |
*= | 乘法赋值 | A *= B | 将操作数A与操作数B相乘的结果赋给操作数A。等效于A = A * B。 |
/= | 除法赋值 | A /= B | 将操作数A除以操作数B的结果赋给操作数A。等效于A = A / B。 |
%= | 取余赋值 | A %= B | 将操作数A对操作数B取余的结果赋给操作数A。等效于A = A % B。 |
&= | 按位与赋值 | A &= B | 将操作数A与操作数B进行按位与操作的结果赋给操作数A。等效于A = A & B。 |
|= | 按位或赋值 A |= B | 将操作数A与操作数B进行按位或操作的结果赋给操作数A。等效于A = A | B。 | |
^= | 按位异或赋值 | A ^= B | 将操作数A与操作数B进行按位异或操作的结果赋给操作数A。等效于A = A ^ B。 |
<<= | 左移赋值 | A <<= B | 将操作数A左移B位的结果赋给操作数A。等效于A = A << B。 |
>>= | 右移赋值 | A >>= B | 将操作数A右移B位的结果赋给操作数A。等效于A = A >> B。 |
>>>= | 无符号右移赋值 | A >>>= B | 将操作数A无符号右移B位的结果赋给操作数A。等效于A = A >>> B。 |
条件运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
? : | 三元条件运算符 | A ? B : C | 在条件A成立时返回B,否则返回C。其中,条件A为布尔表达式,如果A为true,则返回B;如果A为false,则返回C。该运算符可以简化条件判断的代码,相当于if A then B else C。 |
其他运算符
成员访问运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
() | 方法调用运算符 | methodName() | 使用括号来调用方法,传递参数(如果有)并执行方法。 |
[] | 数组访问运算符 | array[index] | 使用方括号来访问数组中特定索引位置的元素,索引从0开始。 |
() | 类型转换运算符 | (typeName) value | 将一个值转换为指定的类型。使用括号将类型名括起来,并将要转换的值放在括号内。 |
instanceof | instanceof 运算符 | object instanceof typeName | 判断一个对象是否是给定类型(或其子类型)的实例。如果是,则返回 true;如果不是,则返回 false。 |
符号运算符
符号 | 名称 | 例子 | 解释 |
---|---|---|---|
. | 成员访问运算符 | object.property | 用于访问类、对象或数组的成员,包括属性和方法。 |
, | 逗号运算符 | (a + b, c - d) | 用于在表达式中分隔多个子表达式,并按顺序依次计算每个子表达式,返回最后一个子表达式的结果。 |
-> | lambda运算符 | (x, y) -> x + y | 用于定义Lambda表达式,一种函数式编程的特性,用于创建函数接口的匿名方法。 |
?. | 条件成员访问运算符 | object?.property | 在Java 8之后的版本中引入,用于处理可能为空的对象的属性或方法调用,防止空指针异常。 |
new | new运算符 | ClassName object = new ClassName(); | 用于创建新的对象实例。 |
?: | 条件运算符 | condition ? value1 : value2 | 根据条件选择不同的值。类似于三元条件运算符,但语义不同。 |
:: | 方法引用运算符 ClassName::methodName | 用于引用方法或构造函数。是Java 8中引入的功能,用于简化Lambda表达式的使用。 | |
synchronized | synchronized运算符 | synchronized (object) { … } | 用于控制多线程访问的同步操作。可以用于方法或代码块,确保同一时间只有一个线程可以执行该代码块。 |
throw | throw运算符 | throw new Exception(); | 用于抛出异常。将一个异常对象抛出给程序的调用者,以处理异常情况。 |