Scala在运算符上并没有和Java有太大出入。(好像所有语言遵循的规则都是那一套)
算术运算符
运算符 | 解释 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -4 | -4 |
+ | 加号 | 2+3 | 5 |
- | 减号 | 3-2 | 1 |
* | 乘号 | 2*3 | 6 |
/ | 处号 | 6/3 | 2 |
% | 取余 | 7%3 | 1 |
+ | 字符串连接 | “hello”+“world” | “helloworld” |
用法与Java一致,不举例。
注意点:
- scala没有++和–运算符
- 取模规则与Java一样,a%b=a-a/b*b
- 除法运算
val a:Int = 10/3 // 3 val b:Double = 10/3 // 3.0 val c:Double = 10.0/3 // 3.3333333333333335 val d = c.formatted("%.2f") // string:3.33
关系运算符
运算符 | 解释 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 3==2 | false |
> | 大于 | 3>2 | true |
< | 小于 | 3<2 | false |
>= | 大于等于 | 3>=2 | true |
<= | 小于等于 | 2<=3 | true |
!= | 不等于 | 6!=3 | true |
注意点:
- 关系型运算符的返回值是布尔类型
- 如果比较两个浮点数,必须保证他们数据类型一致
逻辑运算符
运算符 | 解释 | 范例 | 结果 |
---|---|---|---|
&& | 逻辑与 | true&&false | false |
丨丨 | 逻辑或 | true丨丨true | true |
! | 逻辑非 | !true | false |
参与逻辑运算的对象必须是布尔型,结果也为布尔型。
赋值运算符
运算符 | 解释 | 范例 | 结果 |
---|---|---|---|
= | 等于 | a=10 | 10 |
+= | 加等于 | a+=1 | 11 |
-= | 减等于 | a-=1 | 10 |
*= | 乘等于 | a*=4 | 40 |
/= | 除等于 | a/=2 | 20 |
%= | 模除等于 | a%=9 | 2 |
<<= | 左移等于 | a <<=2 | 8 |
>>= | 右移等于 | a>>=2 | 2 |
&= | 与运算等于 | ||
丨= | 或运算等于 | ||
!= | 异或运算等于 |
Python运算符
最后五种赋值运算符的运算原理可以看我写Python时的位运算符。
位运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
<< | 左移 | 3<<2 | 12 |
>> | 右移 | 3>>1 | 1 |
>>> | 无符号右移 | 3>>>1 | 1 |
& | 与运算 | 6&3 | 2 |
| | 或运算 | 6|3 | 7 |
^ | 异或运算 | 6^3 | 5 |
~ | 取反运算 | ~6 | -7 |
位运算符可以看我写Java运算符中的范例,原理完全一致。
三目运算符
scala不支持三目运算符,但是if-else语句已经可以实现三目运算符的效果,就没有必须用三目了。