运算

51 阅读1分钟

运算符

println(2+1) // 3
println(2-1) // 1
println(2*3) // 6
println(5/2) // 1

运算关系

println(3 == 2)
println(3 != 2)
println(3 >= 2)
println(3 <= 2)
println(3 >2)
println(3 < 2)

逻辑运算

object Sc3 {
  def main(args: Array[String]): Unit = {
    // 与:&& 一假为假,全假为假
    println(2>1 && 3>2 && 4>3)
    println(2>1 && 3>2 && 4>5)

    // 成: || 一真为真,全假为假
    println(2>1 || 2<1)
    println(2>3 || 2<1 || 3>5)

    // 非:! 相反
    println(2>1)
    var a = 2 > 1
    println( !a )
    println( !(2 > 1) )
  }
}
“&&”的优先级要高于“||”

位运算

位运算:把10进制的数转为2进制表示

10进制:0 1 2  3  4   5   6
2进制: 0 1 10 11 100 101 110
换位与运算符:0&1=0,0&0=0,1&1=1,4&5=4
4|5--->5
    4->1 0 0
    5->1 0 1
   |---------
       1 0 1

运算符优先级

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

计算精度问题

val a = 0.1
val b = 0.2
val c = 0.3
println(1 + 2 == 3)
println(0.1 + 0.2 == 0.3)
println(BigDecimal(0.1) + BigDecimal(0.2) ==BigDecimal(0.3))
println(0.1 + 0,1 == 0.2)

大数计算

val a = 2147483647
val b =1
val c = (a + b)/2 //Bug
val c = a - (a-b)/2 //高手计算平均数