Java - 基本运算符
Java 提供了一组丰富的运算符来操作变量。我们可以将所有 Java 运算符分为以下几组 -
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 杂项运算符
算术运算符
算术运算符在数学表达式中的使用方式与在代数中的使用方式相同。下表列出了算术运算符 -
假设整数变量 A 为 10,变量 B 为 20,则 -
显示示例
| 运算符 | 描述 | 示例 |
|---|---|---|
| + (加法) | 在运算符的任一侧添加值。 | A + B会给30 |
| -(减法) | 从左侧操作数中减去右侧操作数。 | A - B 会给出-10 |
| * (乘法) | 将运算符两边的值相乘。 | A * B会给200 |
| /(分区) | 将左侧操作数除以右侧操作数。 | B/A会给2 |
| %(模数) | 将左侧操作数除以右侧操作数并返回余数。 | B % A 会给出0 |
| ++ (增量) | 将操作数的值增加 1。 | B++给出 21 |
| --(递减) | 将操作数的值减 1。 | B-- 给出 19 |
关系运算符
Java语言支持的关系运算符有以下几种。
假设变量 A 为 10,变量 B 为 20,则 -
显示示例
| 运算符 | 描述 | 示例 |
|---|---|---|
| ==(等于) | 检查两个操作数的值是否相等,如果是则条件为真。 | (A ==B) 不正确。 |
| !=(不等于) | 检查两个操作数的值是否相等,如果值不相等则条件为真。 | (A !=B) 为真。 |
| >(大于) | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A> B) 不正确。 |
| <(小于) | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A |
| >=(大于等于) | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A>=B) 不正确。 |
| <=(小于等于) | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <=B) 为真。 |
位运算符
Java定义了几个位运算符,可以应用于整数类型long、int、short、char和byte。
位运算符对位起作用并执行逐位操作。假设 a =60 且 b =13;现在以二进制格式显示如下 -
a =0011 1100
b =0000 1101
-----------------
a&b =0000 1100
a|b =0011 1101
a^b =0011 0001
~a =1100 0011
下表列出了按位运算符 -
假设整数变量 A 为 60,变量 B 为 13,则 -
显示示例
| 运算符 | 描述 | 示例 |
|---|---|---|
| &(按位与) | 如果两个操作数中都存在二进制AND运算符,则将其复制到结果中。 | (A &B) 将给出 12 即 0000 1100 |
| | (按位或) | 二元或运算符如果存在于任一操作数中,则复制一点。 | (A | B) 将给出 61 即 0011 1101 |
| ^ (按位异或) | 二元异或操作符如果在一个操作数中设置,则复制该位,但不能同时在两个操作数中设置。 | (A ^ B) 将给出 49 即 0011 0001 |
| ~(按位恭维) | 二进制补码运算符是一元的,具有“翻转”位的效果。 | (~A ) 将给出 -61,即 1100 0011 的 2 补码形式,因为有符号二进制数。 |
| <<(左移) | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A <<2 将给出 240 即 1111 0000 |
| >>(右移) | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A>> 2 将给出 15 即 1111 |
| >>>(零填充右移) | 右移零填充运算符。左操作数的值右移右操作数指定的位数,移位后的值用零填充。 | A>>>2 将给出 15 即 0000 1111 |
逻辑运算符
下表列出了逻辑运算符 -
假设布尔变量 A 为真,变量 B 为假,则 -
显示示例
| 运算符 | 描述 | 示例 |
|---|---|---|
| &&(逻辑与) | 称为逻辑与运算符。如果两个操作数都不为零,则条件为真。 | (A &&B) 为假 |
| || (逻辑或) | 称为逻辑或运算符。如果两个操作数中的任何一个不为零,则条件为真。 | (A || B) 为真 |
| ! (逻辑不) | 称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑非运算符将为假。 | !(A &&B) 为真 |
赋值运算符
以下是 Java 语言支持的赋值运算符 -
显示示例
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 简单的赋值运算符。将右侧操作数的值分配给左侧操作数。 | C =A + B 将分配 A + 的值; B进C |
| += | 添加 AND 赋值运算符。它将右操作数添加到左操作数并将结果分配给左操作数。 | C +=A 等价于 C =C +一个 |
| -= | 减和赋值运算符。它从左操作数中减去右操作数并将结果分配给左操作数。 | C -=A 等价于 C =C – A |
| *= | 乘与赋值运算符。它将右操作数与左操作数相乘并将结果分配给左操作数。 | C *=A 等价于 C =C *一个 |
| /= | 除法与赋值运算符。它将左操作数与右操作数相除并将结果分配给左操作数。 | C /=A 等价于 C =C / A |
| %= | 模数与赋值运算符。它使用两个操作数取模并将结果分配给左操作数。 | C %=A 等价于 C =C % A |
| <<= | 左移AND赋值运算符。 | C <<=2 等同于 C =C <<2 |
| >>= | 右移AND赋值运算符。 | C>>=2 等同于 C =C>> 2 |
| &= | 按位与赋值运算符。 | C &=2 等同于 C =C &2 |
| ^= | 按位异或和赋值运算符。 | C ^=2 与 C =C ^ 2 相同 |
| |= | 按位包含 OR 和赋值运算符。 | C |=2 等同于 C =C | 2 |
杂项运算符
Java 语言支持的其他运算符很少。
条件运算符 (? :)
条件运算符也称为三元运算符 .该运算符由三个操作数组成,用于计算布尔表达式。运算符的目标是决定应该为变量分配哪个值。运算符写为 -
variable x = (expression) ? value if true : value if false
以下是一个例子 -
示例
现场演示
public class Test {
public static void main(String args[]) {
int a, b;
a = 10;
b = (a == 1) ? 20: 30;
System.out.println( "Value of b is : " + b );
b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
这将产生以下结果 -
输出
Value of b is : 30 Value of b is : 20
instanceof 运算符
此运算符仅用于对象引用变量。运算符检查对象是否属于特定类型(类类型或接口类型)。 instanceof 运算符写为 -
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧的变量引用的对象通过了右侧类/接口类型的 IS-A 检查,则结果将为真。以下是一个例子 -
示例
现场演示
public class Test {
public static void main(String args[]) {
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println( result );
}
}
这将产生以下结果 -
输出
true
如果要比较的对象是与右侧类型兼容的赋值,则此运算符仍将返回 true。以下是另一个例子 -
示例
现场演示
class Vehicle {}
public class Car extends Vehicle {
public static void main(String args[]) {
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result );
}
}
这将产生以下结果 -
输出
true
Java 运算符的优先级
运算符优先级确定表达式中术语的分组。这会影响表达式的计算方式。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符 -
例如,x =7 +; 3* 2;这里 x 被赋值为 13,而不是 20,因为运算符 *优先级高于 +,所以它首先乘以 3 * 2然后加到7中。
在这里,具有最高优先级的运算符出现在表格的顶部,那些具有最低优先级的出现在底部。在表达式中,优先级较高的运算符将首先被计算。
| 类别 | 运算符 | 关联性 |
|---|---|---|
| 后缀 | 表达式++表达式-- | 从左到右 |
| 一元 | ++表达式——表达式+表达式——表达式~! | 从右到左 |
| 乘法 | * / % | 从左到右 |
| 添加剂 | + - | 从左到右 |
| Shift | <<>>>>> | 从左到右 |
| 关系 | <> <=>=instanceof | 从左到右 |
| 平等 | ==!= | 从左到右 |
| 按位与 | & | 从左到右 |
| 按位异或 | ^ | 从左到右 |
| 按位或 | | | 从左到右 |
| 逻辑与 | && | 从左到右 |
| 逻辑或 | || | 从左到右 |
| 有条件的 | ?: | 从右到左 |
| 作业 | =+=-=*=/=%=^=|=<<=>>=>>>= | 从右到左 |
下一步是什么?
下一章将解释 Java 编程中的循环控制。本章将介绍各种类型的循环,以及这些循环如何在 Java 程序开发中使用以及它们的用途。
java