1. Scala的位运算符
需要有二进制位的基础
[提问] 大家是否学过10进制转成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. >> 右移运算符。左边补零,缩小。 7.
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中运算符的优先级
基本规则:
1. 乘(*)除(/)模(%) > 加(+)减(-)
2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)
3. && >
3.Scala的相等性
在Scala中,有两种方式:
1. == 比较的对象只有数值,只要==两边的值相等,就返回true。
2. eq 引用比较
[代码讲授]
def main(args: Array[String]): Unit = {
var s1 = "hello"
var s2 = new String("hello")
var s3 = new String("hello")
println(s1 == s2) // true
println(s1 eq s3) // false
}
4.Scala中的自增和自减运算
在Scala中没有++和--这样的自增和自减运算符。
那么要想在Scala中实现类似于Java中的自增和自减运算,可以使用如下的赋值运算符进行替代。
++:用赋值运算符 +=1代替++。
--:用赋值运算符 -=1代替--。
5.大数问题
一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。
def main(args: Array[String]): Unit = {
var a = 2147483647
var b = 1
var c = (a + b)/2
println(c)
}