Java 运算符优先级

在开始阅读本文之前,您应该对 Java运算符 有基本的了解。


现在,看看下面的语句

int myInt = 12 - 4 * 2;

变量myInt的值是多少?是(12 - 4)*2,即16?还是12 - (4 * 2),即4

当两个运算符共享一个公共操作数(本例中为4)时,具有最高优先级的运算符将首先被计算。

在Java中,*的优先级高于-。因此,乘法在减法之前执行,变量myInt的值将是4。


运算符优先级表

下表列出了Java中运算符的优先级;表中出现的位置越高,优先级越高。

Java 运算符优先级
运算符 优先级
后缀自增自减 ++ --
前缀自增自减和一元运算符 ++ -- + - ~ !
乘法 * / %
加法 + -
移位 << >> >>>
关系 < > <= >= instanceof
相等 == !=
按位与 &
按位异或 ^
按位或 |
逻辑与 &&
逻辑或 ||
三元 ? :
赋值 = += -= *= /= %=
&= ^= |= <<= >>= >>>=

示例:运算符优先级

class Precedence {
    public static void main(String[] args) {
    	
    	int a = 10, b = 5, c = 1, result;
    	result = a-++c-++b;
    	
    	System.out.println(result);
    }
}

输出:

2

前缀++的运算符优先级高于-减法运算符。因此,

result = a-++c-++b;

等同于

result = a-(++c)-(++b);

在处理单个表达式中的多个运算符和操作数时,您可以像上面的示例一样使用括号以获得清晰度。括号内的表达式将首先被计算。


Java中运算符的结合性

如果一个表达式有两个具有相似优先级的运算符,则根据其结合性(从左到右或从右到左)计算表达式。让我们举个例子。

a = b = c;

在这里,变量c的值被赋给变量b。然后变量b的值被赋给变量a。为什么?这是因为=运算符的结合性是从右到左。

下表显示了Java运算符的结合性及其结合性。

Java运算符优先级和结合性
运算符 优先级 结合性
后缀自增自减 ++ -- 从左到右
前缀自增自减和一元运算符 ++ -- + - ~ ! 从右到左
乘法 * / % 从左到右
加法 + - 从左到右
移位 << >> >>> 从左到右
关系 < > <= >= instanceof 从左到右
相等 == != 从左到右
按位与 & 从左到右
按位异或 ^ 从左到右
按位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
三元 ? : 从右到左
赋值 = += -= *= /= %=
&= ^= |= <<= >>= >>>=
从右到左

您无需记住所有内容。大多数时候,运算符的优先级和结合性本身就很有意义。在有疑问时,您可以随时参考本文。此外,如果您认为括号能让您的代码更容易理解,您也可以使用括号。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战