scala的基本运算

60 阅读2分钟

scala中的基本运算

2025-09-176阅读2分钟

需要有二进制位的基础

常用的位运算符如下:

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

  def main(args: Array[String]): Unit = {
    //var a=5 //101
    //var b=4 //100

    println("5&4=" +(5&4)) //0
    println("5|4=" +(5|4)) //5
    println("5^4=" +(5^4)) //1
    println("4>>2=" +(4>>2)) //1
    println("4<<2=" +(4<<2)) //16
  }
}

运算符的基本规则:

1. 乘(*)除(/)模(%) > 加(+)减(-)

2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)

3. && > ||

Scala中的自增和自减运算

在Scala中没有++和--这样的自增和自减运算符。

那么要想在Scala中实现类似于Java中的自增和自减运算,可以使用如下的赋值运算符进行替代。

++:用赋值运算符 +=1代替++。

--:用赋值运算符 -=1代替--。

浮点数精度问题

object basic07 {
  def main(args: Array[String]): Unit = {
    val a=0.1
    val b=0.2
    val c=0.3

    println(a+b==c) //false
    //解释:由于精度的问题,小数的计算会存在误差。

    //解决方案:使用BigDecimal()函数。

    println(BigDecimal(a)+BigDecimal(b)==BigDecimal(c))
  }
}

大数问题

一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。

object basic08 {
  def main(args: Array[String]): Unit = {
    //大数问题
    var a=2147483647
    var b=1
    println(a+b)
    //a和b都是Int类型,所以a+b的结果也是Int类型
    //Int类型的最大值是2147483647
    //2147483647+1=-2147483648

    //计算它们的平均值
    //var c=(a+b)/2
    var c=a-(a-b)/2
    println(c)

    val a1=BigInt("123456789012345678901234567890")
    val b1 = BigInt("987654321098765432109876543210")
    println(a1 + b1)
    println(a1 * b1)
  }

}