java 运算符

35 阅读7分钟

当谈到Java编程语言中的算术运算符时,以下是一些常见的算术运算符及其用法:

1.1 加法运算符 (+): 加法运算符用于将两个数相加。 示例:

int a = 5;
int b = 3;
int sum = a + b; // sum的值为8

1.2 减法运算符 (-): 减法运算符用于将一个数减去另一个数。 示例:

int a = 5;
int b = 3;
int difference = a - b; // difference的值为2

1.3 乘法运算符 (*): 乘法运算符用于将两个数相乘。 示例:

int a = 5;
int b = 3;
int product = a * b; // product的值为15

1.4 除法运算符 (/): 除法运算符用于将一个数除以另一个数。 示例:

int a = 10;
int b = 2;
int quotient = a / b; // quotient的值为5

1.5 取模运算符 (%): 取模运算符返回两个数相除的余数。 示例:

int a = 10;
int b = 3;
int remainder = a % b; // remainder的值为1

1.6 自增和自减运算符:

  • 自增运算符 (++):将操作数的值增加1。
  • 自减运算符 (--):将操作数的值减少1。 这两个运算符可以前置或后置使用,具体取决于它们在表达式中的位置。 示例:
int a = 5;
int b = 3;

a++; // a的值变为6
b--; // b的值变为2

int c = ++a; // 先将a的值增加1,然后将增加后的值赋给c,c的值为7
int d = b--; // 先将b的值赋给d,然后将b的值减少1,d的值为2,b的值为1

2.1 相等运算符 (==): 相等运算符用于检查两个操作数是否相等,如果相等则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isEqual = (a == b); // isEqual的值为false

2.2 不等运算符 (!=): 不等运算符用于检查两个操作数是否不相等,如果不相等则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isNotEqual = (a != b); // isNotEqual的值为true

2.3 大于运算符 (>): 大于运算符用于检查左操作数是否大于右操作数,如果是则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isGreater = (a > b); // isGreater的值为true

2.4 小于运算符 (<): 小于运算符用于检查左操作数是否小于右操作数,如果是则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isLess = (a < b); // isLess的值为false

2.5 大于等于运算符 (>=): 大于等于运算符用于检查左操作数是否大于或等于右操作数,如果是则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isGreaterOrEqual = (a >= b); // isGreaterOrEqual的值为true

2.6 小于等于运算符 (<=): 小于等于运算符用于检查左操作数是否小于或等于右操作数,如果是则返回true,否则返回false。 示例:

int a = 5;
int b = 3;
boolean isLessOrEqual = (a <= b); // isLessOrEqual的值为false

3.1 与运算符 (&&): 与运算符用于同时检查两个条件是否都为真。只有当两个条件都为真时,结果才为真,否则结果为假。 示例:

boolean condition1 = true;
boolean condition2 = false;
boolean result = condition1 && condition2; // result的值为false

3.2 或运算符 (||): 或运算符用于检查两个条件中至少一个是否为真。只要有一个条件为真,结果就为真,只有当两个条件都为假时,结果才为假。 示例:

boolean condition1 = true;
boolean condition2 = false;
boolean result = condition1 || condition2; // result的值为true

3.3 非运算符 (!): 非运算符用于对条件进行取反,即如果条件为真,则结果为假,如果条件为假,则结果为真。 示例:

boolean condition = true;
boolean result = !condition; // result的值为false

4.1 按位与运算符 (&): 按位与运算符用于对两个操作数的每个对应位执行逻辑与操作。如果两个位都为1,则结果为1,否则结果为0。 示例:

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a & b; // result的值为 0001,即1

4.2 按位或运算符 (|): 按位或运算符用于对两个操作数的每个对应位执行逻辑或操作。如果两个位中至少有一个为1,则结果为1,否则结果为0。 示例:

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a | b; // result的值为 0111,即7

4.3 按位异或运算符 (^): 按位异或运算符用于对两个操作数的每个对应位执行逻辑异或操作。如果两个位不同,则结果为1,否则结果为0。 示例:

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a ^ b; // result的值为 0110,即6

4.4 左移运算符 (<<): 左移运算符将一个数的所有位向左移动指定的位数。右侧用0填充。 示例:

int a = 5; // 二进制表示为 0101
int result = a << 2; // result的值为 10100,即20

4.5 右移运算符 (>>): 右移运算符将一个数的所有位向右移动指定的位数。左侧用符号位填充,即正数用0填充,负数用1填充。 示例:

int a = -10; // 二进制表示为 11111111111111111111111111110110(补码表示)
int result = a >> 2; // result的值为 11111111111111111111111111111101,即-3

4.6 无符号右移运算符 (>>>): 无符号右移运算符将一个数的所有位向右移动指定的位数。左侧用0填充。 示例:

int a = -10; // 二进制表示为 11111111111111111111111111110110(补码表示)
int result = a >>> 2; // result的值为 00111111111111111111111111111101,即1073741821

5.1 简单赋值运算符 (=): 简单赋值运算符用于将右操作数的值赋给左操作数。 示例:

int a;
int b = 5;
a = b; // a的值为5,将b的值赋给a

5.2 加法赋值运算符 (+=): 加法赋值运算符用于将左操作数与右操作数相加,并将结果赋给左操作数。 示例:

int a = 5;
int b = 3;
a += b; // a的值为8,相当于 a = a + b

5.3 减法赋值运算符 (-=): 减法赋值运算符用于将左操作数减去右操作数,并将结果赋给左操作数。 示例:

int a = 5;
int b = 3;
a -= b; // a的值为2,相当于 a = a - b

5.4 乘法赋值运算符 (*=): 乘法赋值运算符用于将左操作数与右操作数相乘,并将结果赋给左操作数。 示例:

int a = 5;
int b = 3;
a *= b; // a的值为15,相当于 a = a * b

5.5 除法赋值运算符 (/=): 除法赋值运算符用于将左操作数除以右操作数,并将结果赋给左操作数。 示例:

int a = 10;
int b = 2;
a /= b; // a的值为5,相当于 a = a / b

5.6 取模赋值运算符 (%=): 取模赋值运算符用于将左操作数除以右操作数的余数赋给左操作数。 示例:

int a = 10;
int b = 3;
a %= b; // a的值为1,相当于 a = a % b

6.1 三元条件运算符 (?:): 三元条件运算符是一种简洁的写法,用于根据条件的真假选择不同的值进行赋值或返回。 语法:

条件 ? 值1 : 值2

如果条件为真,则返回值1;如果条件为假,则返回值2。

示例:

int a = 5;
int b = 3;
int max = (a > b) ? a : b; // 如果a大于b,则max的值为a,否则max的值为b

在上面的示例中,根据条件 (a > b) 的真假,将值 ab 赋给变量 max

三元条件运算符是一种简洁而灵活的方式,可以在需要根据条件选择不同值的情况下使用。请注意,三元条件运算符仅适用于简单的条件判断,如果需要复杂的条件逻辑,还是应该使用 if-else 语句。

7.1 有符号左移运算符 (<<): 有符号左移运算符将一个数的所有位向左移动指定的位数。右侧用0填充,并且左移的位数可以是任意非负整数。 示例:

int a = 5; // 二进制表示为 0000 0101
int result = a << 2; // result的值为 0001 0100,即20

7.2 有符号右移运算符 (>>): 有符号右移运算符将一个数的所有位向右移动指定的位数。左侧用符号位填充,即正数用0填充,负数用1填充。右移的位数可以是任意非负整数。 示例:

int a = -10; // 二进制表示为 1111 1111 1111 1111 1111 1111 1111 0110
int result = a >> 2; // result的值为 1111 1111 1111 1111 1111 1111 1111 1101,即-3

7.3 无符号右移运算符 (>>>): 无符号右移运算符将一个数的所有位向右移动指定的位数。左侧用0填充,并且右移的位数可以是任意非负整数。 示例:

int a = -10; // 二进制表示为 1111 1111 1111 1111 1111 1111 1111 0110
int result = a >>> 2; // result的值为 0011 1111 1111 1111 1111 1111 1111 1101,即1073741821

这些位移运算符用于在二进制级别上对整数进行位移操作。通过位移运算符,您可以实现对二进制数据的位级操作,例如将二进制数据向左或向右移动特定位数。请注意,有符号右移运算符和无符号右移运算符之间的主要区别在于左侧填充的位的不同。

8.1 instanceof运算符: instanceof运算符用于检查对象是否是特定类或其子类的实例。它返回一个布尔值,表示对象是否是指定类的实例。 示例:

class Vehicle {
    // ...
}

class Car extends Vehicle {
    // ...
}

class Motorcycle extends Vehicle {
    // ...
}

Vehicle vehicle = new Car();
boolean isCar = vehicle instanceof Car; // 返回true,因为vehicle是Car类的实例
boolean isMotorcycle = vehicle instanceof Motorcycle; // 返回false,因为vehicle不是Motorcycle类的实例

8.2 条件运算符: 条件运算符(也称为三元运算符)是一个具有三个操作数的运算符,形式为 条件 ? 表达式1 : 表达式2。它根据条件的真假选择返回表达式1或表达式2的结果。 示例:

int a = 5;
int b = 3;
int max = (a > b) ? a : b; // 如果a大于b,则max的值为a,否则max的值为b

8.3 空合并运算符: 空合并运算符(null coalescing operator)用于在变量为空时提供一个默认值。它的形式为 变量 ?? 默认值。如果变量为null,则返回默认值;否则返回变量的值。 示例:

String name = null;
String defaultName = "John Doe";
String result = name ?? defaultName; // 如果name为null,则result的值为"defaultName",否则result的值为name的值

这些运算符提供了在不同情况下进行不同操作的方式。instanceof运算符用于判断对象的类型,条件运算符用于根据条件选择不同的值,空合并运算符用于处理可能为空的变量。