算术运算符
对于除号 “/” ,它的整数除和小数除是有区别的,整数之间做除法时,只保留整数部分,而舍弃掉小数部分。
val result1: Int = 10 / 3 //得到结果为3,因为结果为Int类型
val result2: Double = 10 / 3 //得到3.0,因为先到到的3,后转化的类型
val result3: Double = 10.0 / 3 //得到3.33...5,计算之前把低精度提升到高精度后进行计算
关系运算符
在Java中,直接用 == 来判断两者是否相等,Java会判断两者的引用地址,会出现内容相等,但出现false的情况
String s1 = “hello”;
String s2 = new String(original: “hello”);
Boolean isEqual = s1 ==s2; //打印出来为false
System.out.println( s1.equals (s2) ); //判断两者内容是否相同,打印出来为true
在Scala里面,修改了弊端,在其中做判断,相当于直接调用了equals方法
println(s1.eq(s2)) 相当于Java中的 == 方法,会判断两者的引用地址是否相等
逻辑运算符
逻辑运算符由于连接多个条件,最终结果也是一个Boolean值
A为true,B为false
当用&&的时候,第一个值为false时,直接判断为false,而不判断下一个。
与上面一致 || 出现一个true时,直接判断为true
逻辑非最常用的做法是判断一个字符串是否为空
def isNotEmpty(str: String): Boolean = {
return str != null && !("".equals(str.trim))
运算符操作
a为60,b为13
a : 00111100
b : 00001101
a & b = 12 //0000 1100,同一为一,其余为零
a | b = 61 //0011 1101,有一为一,全零为零
a ^ b = 49 //0011 0001,同位的相同为0,相异为1
~ a = -61 //1100 0011,按位取反运算符
<< 左移动运算符 //a<<2 结果为240,0011 0000
>> 左移动运算符 //a>>2 结果为15,0000 1111
2相当于乘4,3相当于乘8,4相当于乘16