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