Scala中的运算符优先级
运算符是一个符号,表示要使用一个或多个操作数执行的操作。运算符是任何编程语言的基础。在具有多个具有不同优先级的运算符的表达式中首先执行哪个运算符由运算符优先级确定。
例如,10 + 20 * 30 计算为 10 + (20 * 30) 而不是 (10 + 20) * 30。
当两个具有相同优先级的运算符出现在表达式中时,使用关联性。关联性可以是从右到左或从左到右。例如 '*' 和 '/' 具有相同的优先级,并且它们的关联性是从左到右,因此表达式“100 / 10 * 10”被视为“(100 / 10) * 10”。
在下表中,优先级最高的运算符出现在表的顶部,而优先级最低的运算符出现在底部。
Operator | Category | Associativity |
---|---|---|
()[] | Postfix | Left to Right |
! ~ | Unary | Right to Left |
* / % | Multiplicative | Left to Right |
+ – | Additive | Left to Right |
>> >>> << | Shift | Left to Right |
< <= > >= | Relational | Left to Right |
== != | Relational is equal to/is not equal to | Left to Right |
== != | Equality | Left to Right |
& | Bitwise AND | Left to Right |
^ | Bitwise exclusive OR | Left to Right |
| | Bitwise inclusive OR | Left to Right |
&& | Logical AND | Left to Right |
| | | Logical OR | Left to Right |
= += -= *= /= %= >>= <<= &= ^= |= | Assignment | Right to left |
, | Comma (separate expressions) | Left to Right |
下面是运算符优先级的示例。
例子 :
// Scala program to show Operators Precedence
// Creating object
object gfg
{
// Main method
def main(args: Array[String])
{
var a:Int = 20;
var b:Int = 10;
var c:Int = 15;
var d:Int = 5;
var e = 0
// operators with the highest precedence
// will operate first
e = a + b * c / d;
/* step 1: 20 + (10 * 15) /5
step 2: 20 + (150 /5)
step 3:(20 + 30)*/
println("Value of a + b * c / d is : " + e )
}
}
输出:
Value of a + b * c / d is : 50
在上面的例子中 e = a + b * c / d;在这里,e 被赋值为 50,而不是 120,因为运算符* 的优先级高于 / 高于 +,所以它首先乘以 10 * 15,然后除以 5,然后再加上 20。