Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 基本运算符



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 关系运算符

Java 语言支持以下关系运算符。

假设变量 A 保持 10,变量 B 保持 20,则 -

显示示例

运算符 描述 示例
== (等于) 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 为假。
!= (不等于) 检查两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> (大于) 检查左操作数的值是否大于右操作数的值,如果大于则条件为真。 (A > B) 为假。
< (小于) 检查左操作数的值是否小于右操作数的值,如果小于则条件为真。 (A < B) 为真。
>= (大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果大于或等于则条件为真。 (A >= B) 为假。
<= (小于或等于) 检查左操作数的值是否小于或等于右操作数的值,如果小于或等于则条件为真。 (A <= B) 为真。

Java 按位运算符

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
| (按位或) 二进制 OR 运算符如果位存在于任一操作数中,则将其复制。 (A | B) 将得到 61,即 0011 1101
^ (按位异或) 二进制 XOR 运算符如果位在一个操作数中设置但不在两个操作数中都设置,则将其复制。 (A ^ B) 将得到 49,即 0011 0001
⁓ (按位取反) 二进制一补码运算符是单目运算符,其作用是“翻转”位。 (⁓A ) 将得到 -61,由于带符号二进制数,因此在 2 的补码形式中为 1100 0011。
<< (左移) 二进制左移运算符。左操作数的值向左移动由右操作数指定的位数。 A << 2 将得到 240,即 1111 0000
>> (右移)

二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即 1111
>>>(零填充右移) 右移零填充运算符。左操作数的值向右移动右操作数指定的位数,并且移位的数值用零填充。 A >>> 2 将得到 15,即 0000 1111

Java 逻辑运算符

下表列出了逻辑运算符:

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

显示示例

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

赋值运算符

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

显示示例

运算符 描述 示例
= 简单赋值运算符。将右侧操作数的值赋给左侧操作数。 C = A + B 将 A + B 的值赋给 C
+= 加法赋值运算符。将右侧操作数加到左侧操作数上,并将结果赋给左侧操作数。 C += A 等价于 C = C + A
-= 减法赋值运算符。从左侧操作数中减去右侧操作数,并将结果赋给左侧操作数。 C -= A 等价于 C = C − A
*= 乘法赋值运算符。将右侧操作数乘以左侧操作数,并将结果赋给左侧操作数。 C *= A 等价于 C = C * A
/= 除法赋值运算符。将左侧操作数除以右侧操作数,并将结果赋给左侧操作数。 C /= A 等价于 C = C / A
%= 取模赋值运算符。使用两个操作数进行取模运算,并将结果赋给左侧操作数。 C %= A 等价于 C = C % A
<<= 左移赋值运算符。 C <<= 2 等价于 C = C << 2
>>= 右移赋值运算符。 C >>= 2 等价于 C = C >> 2
&= 按位与赋值运算符。 C &= 2 等价于 C = C & 2
^= 按位异或赋值运算符。 C ^= 2 等价于 C = C ^ 2
|= 按位或赋值运算符。 C |= 2 等价于 C = C | 2

Java 其他运算符

Java 语言还支持一些其他运算符。

条件运算符(? :)

条件运算符也称为**三元运算符**。此运算符包含三个操作数,用于评估布尔表达式。运算符的目标是确定应将哪个值赋给变量。运算符写成:

variable x = (expression) ? value if true : value if false

示例

以下是一个示例:

在此示例中,我们创建了两个变量 a 和 b,并使用**三元运算符**确定了 b 的值并打印出来。

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 检查,则结果将为真。以下是一个示例:

示例

在此示例中,我们创建了一个 String 类型的变量 name,然后使用**instanceof 运算符**检查 name 是否为 String 类型。

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

如果正在比较的对象与右侧的类型赋值兼容,则此运算符仍将返回真。以下是一个示例:

示例

在此示例中,我们创建了一个 Vehicle 类类型的变量 a,然后使用**instanceof 运算符**检查 name 是否为 Car 类型。

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 中。

在此,优先级最高的运算符出现在表的最上方,优先级最低的运算符出现在表的最下方。在表达式中,优先级较高的运算符将首先计算。

类别 运算符 结合性
后缀 expression++ expression-- 从左到右
一元 ++expression --expression +expression -expression ⁓ ! 从右到左
乘法 * / % 从左到右
加法 + - 从左到右
移位 << >> >>> 从左到右
关系 < > <= >= instanceof 从左到右
相等 == != 从左到右
按位与 & 从左到右
按位异或 ^ 从左到右
按位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %= ^= |= <<= >>= >>>= 从右到左
广告