运算符
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
运算符优先级
计算精度问题
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 //高手计算平均数