java运算符优先级


在Java中,每种运算符都有不同的优先级,优先级高的运算符先于优先级低的运算符执行。如果出现优先级相同的运算符,它们的结合性决定了它们的执行顺序。

下面是Java中常用的运算符优先级(从高到低):

  1. 一元运算符(如取负、取正、逻辑非等)
  2. 乘法运算符(*、/、%)
  3. 加法运算符(+、-)
  4. 移位运算符(<<、>>、>>>)
  5. 关系运算符(<、<=、>、>=、instanceof)
  6. 相等运算符(==、!=)
  7. 位运算符(&、|、^)
  8. 逻辑运算符(&&、||)
  9. 条件运算符(?:)
  10. 赋值运算符(=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=)

需要注意的是,如果有多个运算符出现在同一个表达式中,优先级和结合性决定了它们的执行顺序。例如,a+b*c中,先执行乘法运算符,再执行加法运算符。

如果不确定某个表达式中运算符的优先级,可以使用圆括号来改变运算的优先级。

以下是一些Java运算符优先级的示例:

int a = 5, b = 10, c = 15;
boolean x = true, y = false;

// 算术运算符优先级高于关系运算符
if (a + b > c) {
    System.out.println("a + b > c"); // 输出
}

// 逻辑非运算符优先级高于逻辑与运算符
if (!x && y) {
    System.out.println("x && y"); // 不输出
}

// 条件运算符优先级最低,要加括号
int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
System.out.println(max); // 输出15

在第一个示例中,我们使用了算术运算符和关系运算符,由于算术运算符的优先级高于关系运算符,所以先计算a+b的值,再和c进行比较。

在第二个示例中,我们使用了逻辑非运算符和逻辑与运算符,由于逻辑非运算符的优先级高于逻辑与运算符,所以先对x取反,再和y进行逻辑与运算。

在第三个示例中,我们使用了条件运算符来计算三个数中的最大值,由于条件运算符优先级最低,所以要使用括号来改变优先级,以确保先进行内层的比较运算。


原文链接:codingdict.net