运算符是一个符号,告诉编译器执行特定的数学或逻辑操作, Scala具有丰富的内置运算符,并提供以下类型的运算符-
Scala语言支持以下算术运算符。如假设变量A=10,变量B=20,则-
运算符 | 描述 | 示例 |
---|---|---|
+ | 相加 | A + B=30 |
- | 相减 | A - B=-10 |
* | 相乘 | A * B=200 |
/ | 相除 | B/A=2 |
% | 取模 | B % A=0 |
object Demo { def main(args: Array[String]) { var a = 10; var b = 20; var c = 25; var d = 25; println("a + b=" + (a + b) ); println("a - b=" + (a - b) ); println("a * b=" + (a * b) ); println("b/a=" + (b / a) ); println("b % a=" + (b % a) ); println("c % a=" + (c % a) ); } }
将以上程序保存在Demo.scala中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
a + b=30 a - b=-10 a * b=200 b/a=2 b % a=0 c % a=5
Scala语言支持以下关系运算符。如假设变量A=10,变量B=20,则-
运算符 | 描述 | 示例 |
---|---|---|
== | 相等 | (A == B) is not true. |
!= | 不相等 | (A != B) is true. |
> | 大于 | (A > B) is not true. |
< | 小于 | (A < B) is true. |
>= | 大于或等于 | (A >= B) is not true. |
<= | 小于或等于 | (A <= B) is true. |
object Demo { def main(args: Array[String]) { var a = 10; var b = 20; println("a == b=" + (a == b) ); println("a != b=" + (a != b) ); println("a > b=" + (a > b) ); println("a < b=" + (a < b) ); println("b >= a=" + (b >= a) ); println("b <= a=" + (b <= a) ); } }
将以上程序保存在Demo.scala中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
将以上程序输出:
a == b=false a != b=true a > b=false a < b=true b >= a=true b <= a=false
Scala语言支持以下逻辑运算符。如假设变量A=1,变量B=0,则-
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑和(AND)。 | (A && B) is false. |
|| | 逻辑或(OR)。 | (A || B) is true. |
! | 逻辑非 | !(A && B) is true. |
object Demo { def main(args: Array[String]) { var a = true; var b = false; println("a && b=" + (a&&b) ); println("a || b=" + (a||b) ); println("!(a && b)=" + !(a && b) ); } }
将以上程序保存在Demo.scala中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
a && b=false a || b=true !(a && b)=true
按位运算符对位进行运算并执行逐位操作。&,|和^的真值表如下-
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假设A=60,和B=13,现在以二进制格式,它们将如下所示-
A=0011 1100 B=0000 1101 ----------------------- A&B=0000 1100 A|B=0011 1101 A^B=0011 0001 ~A=1100 0011
下表列出了Scala语言支持的按位运算符。假设变量A=60,变量B=13,则-
运算符 | 描述 | 示例 |
---|---|---|
& | 按位AND | (A & B)=12, which is 0000 1100 |
| | 按位 OR | B)=61, which is 0011 1101 |
^ | 按位 异或 | (A ^ B)=49, which is 0011 0001 |
~ | 按位 取反 | (~A )=-61, which is 1100 0011 in 2's complement form due to a signed binary number. |
<< | 左移位,左移一位乘以2,二位乘以4以此类批 | A << 2=240, which is 1111 0000 |
>> | 右移位,右移一位除以2,二位除以4以此类批 | A >> 2=15, which is 1111 |
>>> | 补零右移位 | A >>>2=15 which is 0000 1111 |
object Demo { def main(args: Array[String]) { var a = 60; /* 60=0011 1100 */ var b = 13; /* 13=0000 1101 */ var c = 0; c = a & b; /* 12=0000 1100 */ println("a & b=" + c ); c = a | b; /* 61=0011 1101 */ println("a | b=" + c ); c = a ^ b; /* 49=0011 0001 */ println("a ^ b=" + c ); c = ~a; /* -61=1100 0011 */ println("~a=" + c ); c = a << 2; /* 240=1111 0000 */ println("a << 2=" + c ); c = a >> 2; /* 215=1111 */ println("a >> 2 =" + c ); c = a >>> 2; /* 215=0000 1111 */ println("a >>> 2=" + c ); } }
将以上程序保存在Demo.scala中,以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
a & b=12 a | b=61 a ^ b=49 ~a=-61 a << 2=240 a >> 2=15 a >>> 2=15
优先级最高的运算符出现在表格的顶部,优先级最低的运算符出现在表格的底部。在表达式中,优先级较高的运算符将首先被判断。
Category | Operator | 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 |
Equality | == != | Left to right |
Bitwise AND | & | Left to right |
Bitwise XOR | ^ | Left to right |
Bitwise OR | | | Left to right |
Logical AND | && | Left to right |
Logical OR | || | Left to right |
Assignment | = += -= *= /= %= >>= <<= &= ^= |= | Right to left |
Comma | , | Left to right |
object Demo { def main(args: Array[String]) { var a = 10; var b = 20; var c = 0; c = a + b; println("c=a + b =" + c ); c += a ; println("c += a =" + c ); c -= a ; println("c -= a=" + c ); c *= a ; println("c *= a=" + c ); a = 10; c = 15; c /= a ; println("c /= a =" + c ); a = 10; c = 15; c %= a ; println("c %= a =" + c ); c <<= 2 ; println("c <<= 2 =" + c ); c >>= 2 ; println("c >>= 2 =" + c ); c >>= 2 ; println("c >>= 2 =" + c ); c &= a ; println("c &= a =" + c ); c ^= a ; println("c ^= a =" + c ); c |= a ; println("c |= a =" + c ); } }
将以上程序保存在Demo.scala中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
c=a + b =30 c += a =40 c -= a =30 c *= a =300 c /= a =1 c %= a =5 c <<= 2 =20 c >>= 2 =5 c >>= 2 =1 c &= a =0 c ^= a =10 c |= a =10
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)