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 中运算符的优先级
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语句
练习:
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")
}
}
}