📜  Scala中的运算符优先级(1)

📅  最后修改于: 2023-12-03 15:05:04.863000             🧑  作者: Mango

Scala中的运算符优先级

在Scala中,不同的运算符有不同的优先级。当表达式中包含多个运算符时,Scala会按照一定的规则进行结合和计算,这些规则称为运算符的优先级。

运算符的优先级

Scala中的运算符按照从高到低的优先级排列如下:

| 优先级 | 运算符 | 结合性 | | ------ | ------------------------------------ | -------- | | 1 | () | 左结合 | | 2 | + - ! ~ ++ -- | 右结合 | | 3 | * / % | 左结合 | | 4 | + - | 左结合 | | 5 | << >> >>> | 左结合 | | 6 | < <= > >= instanceof | 左结合 | | 7 | == != | 左结合 | | 8 | & | 左结合 | | 9 | ^ | 左结合 | | 10 | | | 左结合 | | 11 | && | 左结合 | | 12 | || | 左结合 | | 13 | = | 右结合 |

运算符的结合性

运算符的结合性指的是当表达式中多个运算符出现时,它们的计算顺序是如何确定的。Scala中的运算符可以是左结合或右结合。

左结合的运算符按照从左至右的顺序进行计算,例如 1 + 2 + 3 相当于 (1 + 2) + 3,先计算左边的表达式再计算右边的表达式。

右结合的运算符按照从右至左的顺序进行计算,例如 a = b = 1 相当于 a = (b = 1),先计算右边的表达式再计算左边的表达式。

示例

以下是一些示例程序,演示了Scala中运算符优先级和结合性的使用。

// 左结合的运算符
val result1 = 1 + 2 + 3 * 4   // 结果为 15,先计算乘法再计算加法
val result2 = "hello" + " " + "world" // 结果为 "hello world",先计算左边的加法再计算右边的加法

// 右结合的运算符
var a = 1
var b = 2
var result3 = a = b = 3  // 结果为 3,先计算右边的赋值,再计算左边的赋值

// 括号的优先级最高
val result4 = (1 + 2) * 3   // 结果为 9,先计算括号内的加法再计算乘法
val result5 = (1 + 2) * (3 + 4) // 结果为 21,先计算括号内的加法再计算括号外的乘法