Scala数据运算符的基本运算

24 阅读2分钟

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的位运算

十进制转二进制:

image.png

常用的位运算符如下:

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. >> 右移运算符。左边补零,缩小。

image.png

运算符的优先级:

基本规则:

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)`

image.png

小技巧:另一种计算平均值的方法: a - (a-b)/2