Skip to content

运算符

运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较。Java 中提供了丰富的运算符,如赋值运算符、算术运算符、比较运算符等。

赋值运算符

赋值运算符用于给变量赋值,将右边的值赋给左边的变量。赋值运算符使用 = 表示。

java
int a = 10;
int b = 20;
a = b;

int c = d = e = 30;

算术运算符

算术运算符用于执行基本的数学运算,如加、减、乘、除等。Java 中的算术运算符包括加法运算符 +、减法运算符 -、乘法运算符 *、除法运算符 /、取模(取余)运算符 %

25020707.png

表 Java 算数运算符
java
int a = 10;
int b = 20;

int c = a + b;
int d = a - b;
int e = a * b;
int f = a / b;
int g = a % b;

自增和自减运算符

自增运算符 ++ 和自减运算符 -- 是一种特殊的算术运算符,用于增加或减少变量的值。自增运算符 ++ 用于将变量的值加 1,自减运算符 -- 用于将变量的值减 1。

java
++a 或 --a // 表示在使用变量 a 之前,先将 a 的值加 1 或减 1
a++ 或 a-- // 表示在使用变量 a 之后,再将 a 的值加 1 或减 1

比较运算符

比较运算符用于变量之间、变量和自变量之间及其他类型的信息之间的比较。比较运算符的结果类型是 boolean 类型。当比较运算符的条件成立时,返回 true;否则,返回 false

25020708.png

表 Java 比较运算符
java
int a = 10;
int b = 20;

boolean c = a > b;
boolean d = a < b;
boolean e = a >= b;
boolean f = a <= b;
boolean g = a == b;
boolean h = a != b;

逻辑运算符

逻辑运算符用于连接两个或多个条件,以产生逻辑结果。逻辑运算符的结果类型是 boolean 类型。逻辑运算符包括逻辑与 &&、逻辑或 ||、逻辑非 !

25020709.png

表 Java 逻辑运算符

短路与运算符 &&

当且仅当两个操作数均为 true 时,结果才为 true。若左侧表达式为 false,右侧表达式不会执行(短路特性)。

java
boolean result = (a > 0) && (b < 20); // 若 a <= 0,右侧不计算

短路或运算符 ||

只要有一个操作数为 true,结果即为 true。若左侧表达式为 true,右侧表达式不会执行(短路特性)。

java
boolean result = (a < 0) || (b > 5); // 若 a < 0 为 true,右侧不计算

逻辑非运算符 !

对布尔值取反。

java
boolean result = !(a == 5); // a 等于 5 时为 false,否则为 true

非短路与运算符 &

&& 类似,但无论左侧结果如何,右侧都会执行。当操作数为布尔类型时作为逻辑运算符,整数类型时作为位运算符。

java
boolean result = (a < 0) & (b++ > 5); // 即使 a >= 0,b++ 仍会执行

非短路或运算符 |

|| 类似,但无论左侧结果如何,右侧都会执行。同样区分布尔逻辑运算和整数位运算。

java
boolean result = (a > 0) | (b++ < 5); // 即使 a > 0 为 true,b++ 仍执行

逻辑异或运算符 ^

当两个操作数不同(一个 true,一个 false)时结果为 true,否则为 false

java
boolean result = (a > 0) ^ (b < 5); // 仅一者为 true 时结果为 true

示例代码

java
int a = 5, b = 10;

// 短路与
boolean result1 = (a > 0) && (b < 20); // true,右侧不计算(若 a <= 0)

// 非短路与
boolean result2 = (a < 0) & (b++ > 5); // false,但 b 仍递增至 11

// 短路或
boolean result3 = (a > 0) || (b < 5); // true,右侧不计算

// 逻辑异或
boolean result4 = (a > 0) ^ (b < 5); // true ^ false → true

位运算符

位运算符用于对整数类型的数据(如 int、long、short、byte 和 char)的二进制位进行操作。位运算符直接操作数据的二进制表示,因此在某些情况下可以提供高效的运算。

按位与(&)

对两个操作数的每一位进行与操作,只有当两个对应的位都为 1 时,结果位才为 1,否则为 0。

java
int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a & b;  // 结果: 0001 (十进制 1)

按位或(|)

对两个操作数的每一位进行或操作,只要两个对应的位中有一个为 1,结果位就为 1,否则为 0。

java
int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a | b;  // 结果: 0111 (十进制 7)

25020714.png

图 5&-4的运算过程

25020715.png

图 3|6的运算过程

按位异或(^)

对两个操作数的每一位进行异或操作,当两个对应的位不同时,结果位为 1,否则为 0。

java
int a = 5;  // 二进制: 0101
int b = 3;  // 二进制: 0011
int result = a ^ b;  // 结果: 0110 (十进制 6)

25020712.png

图 ~7的运算过程

25020713.png

图 10^3的运算过程

按位取反(~)

对操作数的每一位进行取反操作,即 0 变为 1,1 变为 0。

java
int a = 5;  // 二进制: 0101
int result = ~a;  // 结果: 11111111111111111111111111111010 (十进制 -6)

移位操作

Java 中的移位操作符用于对操作数的二进制位进行左移或右移操作。

移位操作相当于对操作数进行乘法或除法运算,左移一位相当于乘以 2,右移一位相当于除以 2。例如,a << 1 相当于 a * 2a >> 2 相当于 a / 4

移位操作符适用的数据类型有:byte、short、char、int 和 long。

在 Java 中有以下三种移位操作符:

  • 左移(<<):将操作数的二进制位向左移动指定的位数,右边空出的位用 0 填充。

    java
    int a = 5;  // 二进制: 0101
    int result = a << 1;  // 结果: 1010 (十进制 10)
  • 右移(>>):将操作数的二进制位向右移动指定的位数,左边空出的位用符号位填充(正数用 0,负数用 1)。

    java
    int a = 5;  // 二进制: 0101
    int result = a >> 1;  // 结果: 0010 (十进制 2)

    25020710.png

    图 右移操作
  • 无符号右移(>>>):将操作数的二进制位向右移动指定的位数,左边空出的位用 0 填充,不考虑符号位。

    java
    int a = -5;  // 二进制: 11111111111111111111111111111011
    int result = a >>> 1;  // 结果: 01111111111111111111111111111101 (十进制 2147483645)

三元运算符

Java 中的三元运算符是一种简洁的条件表达式,格式为:

java
条件 ? 表达式1 : 表达式2
  • 条件:布尔表达式,结果为 truefalse
  • 表达式1:条件为 true 时执行。
  • 表达式2:条件为 false 时执行。

示例:

java
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // 如果 a > b,max 为 a,否则为 b
System.out.println("最大值: " + max); // 输出 20

特点:

  • 简洁:替代简单的 if-else 语句。
  • 返回值:必须返回一个值,且 表达式1表达式2 的类型应兼容。

运算符优先级

Java 中的表达式就是使用运算符连接起来的符合 Java 规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。通常优先级由高到低的顺序依次是:

  • 增量和减量运算。
  • 算数运算
  • 比较运算
  • 逻辑运算
  • 赋值运算

如果两个运算由相同的优先级,那么左边的表达式要比右边的表达式先被处理。

25020711.png

表 运算符优先级
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!