数据存储在变量中,要对数据进行运算,就需要使用运算符。Scala语言中提供了这几种运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。
注:实际上,Scala没有传统意义上的运算符。在Scala中,一切皆对象,运算符是定义在对象上的方法。但是为了学习上的方便,我们还在这里称为运算符。
算术运算符如下表所示:
运算符 | 描述 | 说明 |
---|---|---|
+ | 加法运算 | 10 + 3,结果是13 |
– | 减法运算 | 10 – 3,结果是7 |
* | 乘法运算 | 10 * 3,结果是30 |
/ | 除法运算 | 10 / 3,结果是3 |
% | 求余数运算 | 10 % 3,结果是1 |
在scala shell中输入以下示例代码:
// 算术运算符
scala> val a = 7
a: Int = 7
scala> val b = 3
b: Int = 3
scala> a + b
res0: Int = 10
scala> a - b
res1: Int = 4
scala> a * b
res2: Int = 21
scala> a / b
res3: Int = 2
scala> a % b
res4: Int = 1
关系运算符如下表所示:
运算符 | 描述 | 说明 |
---|---|---|
== | 判断两个值是否相等,结果为true或false | 10 == 3,结果是false |
!= | 判断两个值是否不相等,结果为true或false | 10 != 3,结果是true |
> | 判断左值是否大于右值,结果为true或false | 10 > 3,结果是true |
< | 判断左值是否小于右值,结果为true或false | 10 < 3,结果是false |
>= | 判断左值是否大于等于右值,结果为true或false | 10 >= 3,结果是true |
<= | 判断左值是否小于等于右值,结果为true或false | 10 <= 3,结果是false |
scala> val a = 7
a: Int = 7
scala> val b = 3
b: Int = 3
scala> a == b
res5: Boolean = false
scala> a != b
res6: Boolean = true
scala> a > b
res7: Boolean = true
scala> a < b
res8: Boolean = false
scala> a >= b
res9: Boolean = true
scala> a <= b
res10: Boolean = false
逻辑运算符如下表所示:
运算符 | 描述 | 说明 |
---|---|---|
&& | 逻辑与运算,结果为true或false | 10>3 && 3>5,结果是false |
|| | 逻辑或运算,结果为true或false | 10>3 || 3>5,结果是true |
! | 逻辑非运算,结果为true或false | !true,结果是false |
scala> true && true
res11: Boolean = true
scala> true && false
res12: Boolean = false
scala> false && true
res13: Boolean = false
scala> false && false
res14: Boolean = false
scala> true || true
res15: Boolean = true
scala> true || false
res16: Boolean = true
scala> false || true
res17: Boolean = true
scala> false || false
res18: Boolean = false
scala> !true
res19: Boolean = false
scala> !false
res20: Boolean = true
位运算符如下表所示:
运算符 | 描述 | 说明 |
---|---|---|
& | 按位与运算 | 0 & 1,结果是0 |
| | 按位或运算 | 0 | 1,结果是1 |
~ | 按位取反运算 | ~12,结果是-13;~(-12),结果是11 |
^ | 按位异或运算 | 1^ 1,结果是0 |
<< | 左移位运算 | 2<<2,结果是8 |
>> | 右移位运算 | 4>>2,结果是1 |
>>> | 无符号右移位运算 | 4>>>2,结果是1 |
位运算符在实际中使用较少。
赋值运算符如下表所示:
运算符 | 描述 | 说明 |
---|---|---|
= | 赋值运算,将右边的值赋给左边的变量 | var a = 3,为变量a赋值 |
+= | 将左边变量值与右边值相加后,再赋值给左边的变量 | a += 2,相当于 a = a+2 |
-= | 将左边变量值与右边值相减后,再赋值给左边的变量 | a -= 2,相当于 a = a-2 |
*= | 将左边变量值与右边值相乘后,再赋值给左边的变量 | a = 2,相当于 a = a2 |
/= | 将左边变量值与右边值相除后,再赋值给左边的变量 | a /= 2,相当于 a = a/2 |
%= | 将左边变量值与右边值求余后,再赋值给左边的变量 | a %= 2,相当于 a = a%2 |
<<= | 将左边的变量值按位左移位后,再赋值给左边的变量 | a <<= 2,相当于 a = a<<=2 |
>>= | 将左边的变量值按位右移位后,再赋值给左边的变量 | a >>= 2,相当于 a = a>>=2 |
&= | 将左边变量值与右边值按位与后,再赋值给左边的变量 | a &= 2,相当于 a = a&2 |
|= | 将左边变量值与右边值按位或后,再赋值给左边的变量 | a |= 2,相当于 a = a|2 |
^= | 将左边变量值与右边值按位异或后,再赋值给左边的变量 | a ^= 2,相当于 a = a^2 |
scala> var a = 3 // 注意这里。因为是重复赋值运算,所以使用关键字var声明变量
a: Int = 3
scala> a += 2; a
res24: Int = 5
scala> a -= 2; a
res25: Int = 3
scala> a *= 2; a
res26: Int = 6
scala> a /= 2; a
res27: Int = 3
scala> a %= 2; a
res28: Int = 1
scala> a << 2; a
res29: Int = 1
scala> a >> 2; a
res30: Int = 1
scala> a <<= 2; a
res31: Int = 4
scala> a >>= 2; a
res32: Int = 1
scala> a &= 2; a
res33: Int = 0
scala> a |= 2; a
res34: Int = 2
scala> a ^= 2; a
res35: Int = 0
对象相等性比较:在Scala中比较的是值,而不是Java概念中的地址值。请看下面的代码:
scala> ("he" + "llo") == "hello"
res33: Boolean = true
scala> 1 == 1.0
res34: Boolean = true
要比较2个不同的对象,使用三个等号(===)。
在实际进行计算的时候,经常会多个不同的运算符混合在一起进行运算,这时就需要考虑运算符的优先级问题。运算符优先级取决于所属的运算符组,它会影响算式的的计算。
下表中显示了Scala中不同运算符的优先级:
优先级 | 运算符 | 关联性 |
---|---|---|
1 | () [ ] | 从左到右 |
2 | ! ~ | 从右到左 |
3 | * / % | 从左到右 |
4 | + – | 从左到右 |
5 | >> >>> << | 从左到右 |
6 | > >= < <= | 从左到右 |
7 | == != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | = += -= *= /= %= >>= <<= &= |= ^= |
© 版权声明
本站网络名称:
知趣
本站永久网址:
https://www.qubaa.top
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容