-

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 <B)是真的。
> =(大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成为真。 (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运算符存在于两个操作数中,则二进制AND运算符将对结果复制一位。 (A和B)将给出12是0000 1100
| (按位或) 二进制OR运算符如果存在于任一操作数中,则复制一位。 (A | B)将给出61,其为0011 1101
^(按位异或) 二进制XOR操作符复制该位,如果它设置在一个操作数中,而不是两者。 (A ^ B)将给出49,其为0011 0001
〜(按位称赞) 二进制补码运算符是一元的,具有“翻转”位的作用。 (〜A)将给出-61,由于有符号的二进制数,它是2 0的补码形式的1100 0011。
<<(左移) 二进制左移操作符。左操作数值左移由右操作数指定的位数。 A << 2将给出240是1111 0000
>>(右移) 二进制右移操作符。左操作数值被右操作数指定的位移动。 A >> 2将给出15是1111
>>>(零填补右移) 右移零填充操作符。左操作数值右移由右操作数指定的位数,移位值用零填充。 A >>> 2将给出15是0000 1111

逻辑运算符

下表列出了逻辑运算符 -

假设布尔变量A为真,变量B为假,则 -

显示示例

操作符 描述
&&(逻辑和) 称为逻辑AND运算符。如果两个操作数都不为零,则条件成立。 (A && B)是假的
|| (逻辑或) 称为逻辑或运算符。如果两个操作数中的任何一个非零,则条件成立。 (A || B)是真的
(逻辑不) 称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑NOT运算符将为false。 !(A && B)是真的

作业人员

以下是Java语言支持的赋值运算符 -

显示示例

操作符 描述
= 简单赋值运算符。将右侧操作数的值分配给左侧操作数。 C = A + B将A的值分配给C
+ = 添加AND赋值运算符。它将右操作数添加到左操作数,并将结果分配给左操作数。 C + = A等价于C = C + A
- = 减去AND赋值运算符。它从左操作数中减去右操作数,并将结果分配给左操作数。 C - = A等价于C = C-A
* = 乘以AND赋值运算符。它将右操作数与左操作数相乘,并将结果分配给左操作数。 C * = A等价于C = C * A
/ = 除以AND赋值运算符。它将左操作数与右操作数分开,并将结果分配给左操作数。 C / = A等价于C = C / A
%= 模数和赋值运算符。它需要使用两个操作数的模数,并将结果分配给左操作数。 C%= A等价于C = C%A
<< = 左移和赋值运算符。 C << = 2与C = C << 2相同
>> = 右移和赋值运算符。 C >> = 2与C = C >> 2相同
&= 按位AND赋值运算符。 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运算符写为 -

( 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,因为operator *的优先级高于+,所以它首先被乘以3 * 2,然后加到7中。

这里,优先级最高的运算符出现在表的顶部,最底层的运算符出现在底部。在一个表达式中,先优先级较高的算子。

类别 操作符 关联性
后缀 >()[]。(点运算符) 左到右
一元 > ++ - - ! 右到左
乘法 > * / 左到右
添加剂 > + - 左到右
转移 >>> >>> << 左到右
关系型 >>> = <<= 左到右
平等 > ==!= 左到右
按位AND >& 左到右
按位XOR > ^ 左到右
按位OR > | 左到右
逻辑与 > && 左到右
逻辑或 > || 左到右
有条件的 ?: 右到左
分配 > = + = - = * = / =%= >> = << =&= ^ = | = 右到左

下一步是什么?

下一章将介绍Java编程中的循环控制。本章将介绍各种类型的循环,以及如何在Java程序开发中使用这些循环以及它们正在使用的目的。