Scala的赋值预算符
= 简单的赋值运算,指定将右边操作数赋值给左边的操作数
+= 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数
-= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数
*= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数
/= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数
%= 求余后再赋值,将左右两边的操作数进行求余操作后再赋值给左边的操作数
def main(args: Array[String]): Unit = { // 赋值运算符 var a = 1 // 把右边的计算结果保存到左边的变量 a += 2 // a+=2 等价于 a = a+2 println(a) // a -= 1 // a-=1 等价于 a=a-1 println(a) // a *= 3 println(a) // a /= 4 println(a) // a %= 5 println(a) // } printfln( a )
Scala的位运算
十进制转二进制:
常用的位运算符如下:
1. & 按位与运算符。0&1 = 0, 1&0= 0 , 0&0 = 0, 1&1 = 1
2. | 按位或运算符。0|1 = 1, 1|0= 1 , 0|0 = 0, 1|1 = 1
3. ^ 按位异或运算符。0^1 = 1, 1^1= 0, 0^0 = 0
4. ~ 按位取反运算符
5. << 左移运算符。右边补零,放大。
6. >> 右移运算符。左边补零,缩小。
运算符的优先级:
基本规则:
1. 乘(*)除(/)模(%) > 加(+)减(-)
2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)
3. && > ||
| 1 | () [] | 从左到右 | ||
|---|---|---|---|---|
| 2 | ! ~ | 从右到左 | ||
| 3 | * / % | 从左到右 | ||
| 4 | + - | 从左到右 | ||
| 5 | >> >>> << | 从左到右 | ||
| 6 | > >= < <= | 从左到右 | ||
| 7 | == != | 从左到右 | ||
| 8 | & | 从左到右 | ||
| 9 | 从左到右 | |||
| 10 | 从左到右 | |||
| 11 | && | 从左到右 | ||
| 12 | 从左到右 | |||
| 13 | = += -= *= /= %= >>= <<= &= ^= | = | 从右到左 | |
| 14 | , | 从左到右 |
大数问题
一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。
`def main(args: Array[String]): Unit = {
var a = 2147483647
var b = 1
var c = (a + b)/2
println(c)
}`
用BigInt(数字字符串)来解决这个问题。
`val a = BigInt("123456789012345678901234567890")
val b = BigInt("987654321098765432109876543210")
println(a + b)
println(a * b)`
小技巧:另一种计算平均值的方法: a - (a-b)/2