运算符的优先级

91 阅读1分钟

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

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

2.Scala 中运算符的优先级

屏幕截图 2025-09-17 092757.png

屏幕截图 2025-09-17 092840.png 屏幕截图 2025-09-17 103228.png

3.浮点数精度问题

使用BigDecimal()函数。

println(0.1 + 0.2 == 0.3)  
    println(BigDecimal(0.1) + BigDecimal(0.2) == BigDecimal(0.3))

4.大数问题

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

object ddd05 {
  def main(args: Array[String]): Unit = {
    val a = 2147483647
    val b = 1
    val c = a - (a - b) /2
    println(c)
  }
}

用BigInt(数字字符串)来解决这个问题。

val a = BigInt("123456789012345678901234567890")

val b = BigInt("987654321098765432109876543210")

println(a + b)

println(a * b)

5.if语句

屏幕截图 2025-09-17 103537.png 练习:

屏幕截图 2025-09-17 103700.png

object ddd05 {
  def main(args: Array[String]): Unit = {
    println("请输入一个正方形的边长")
    val a = scala.io.StdIn.readInt()
    println("请输入一个长方形的长")
    val b = scala.io.StdIn.readInt()
    println("请输入一个长方形的宽")
    val c = scala.io.StdIn.readInt()
    if (a*a<b*c){
      println("RECTANGLE")
    } else if (a*a>b*c){
      println("SQUARE")
    }else{
      println("SAME")
    }
  }
}