文章目录
Scala 运算符
一、算术运算符
1、基本语法
Scala 运算符的使用和Java运算符的使用基本相同,只有个别细节上不同
2、代码示例
注意:Scala里面做除数运算的话,只会保留商,余数直接舍掉了,要是想有小数的话,除数和被除数里面一定要有一个小数,那么就可以自动转换为小数除法
package scala_xuexi01
class test10_yunsuanfu {
}
object test10_yunsuanfu{
def main(args: Array[String]): Unit = {
//算术运算符
val result1 = 10 /3 //注意:整数除法只保留商,余数就直接舍掉了
println(result1)
val result2:Double = 10 / 3 //直接转换成double类型的也不行,因为是先进行整数相除,然后才进行类型转换所以得到的是3.0
println(result2)
val result3:Double = 10.0 / 3 //只有这两个数里面有一个是小数类型都会转变为小数除法,低精度自动转变为高精度
// println(result3)
println(result3.formatted("%5.2f")) //保留两位数的话使用formatted()方法,里面%.2f 保留两位小数
val result4:Double = 10 / 7.0
println(result4.formatted("%.2f"))
//取余运算
val result5:Int = 10 % 3 //直接取出余数,没有商
println(result5)
}
}
二、比较运算符
1、基本语法
2、代码示例
在Scala里面判断两个字符串变量是否相等不用像java里一样,需要使用equals()
方法,判断变量里面的内容,直接== 就可以判断出来,要是想判断两个变量的引用地址地址的话,使用eq()
方法
// 2、比较运算符
val s1:String = "hello"
val s2:String = new String("hello")
println(s1==s2) //在scala 里面判断字符相等于直接判断了内容
println(s1.equals(s2)) //这个和上面那个等价
println(s1.eq(s2)) //eq方法是用来判断引用地址是否相同
三、逻辑运算符
1、基本语法
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个Boolen 值,假定:变量A为true,B为false
2、代码示例
在进行逻辑判断的时候,&& 和 || 都具有短路特征,只要一个不符合条件,后面的就不会执行了
//逻辑运算符
def m1(n:Int):Int = {
println("m被调用")
return n
}
val n = 1
println((4>5)&& m1(n)>0) //&& 和 || 具有短路特征,第一个不合符要求直接就中断了,后面那个不会再执行
//使用场景用的比较多的地方,判断一个字符串是否为空
def isNotEmpty(str: String):Boolean ={
//return !(str == "") //因为这个判断这个str是否为空,== "" 说明为空的时候是false 然后取反不为空的时候才为true
return str != null && !("".equals(str)) //如果按照上面那样的话,传入进去一个null值,
} //没有字符但是还是会判定成true 这样反过来,用equls把str传入进去就不可以避免这种问题了
println(isNotEmpty(null))
}
四、赋值运算符
1、基本语法
赋值运算符就是将某个运算后的值,赋给指定的变量
注意:Scala 中没有 ++ ,–操作符,可以通过+=,-=来实现同样的效果
2、代码示例
注意:赋值只能使用var
,val
常量不行,+=1的时候注意那个1是Int
类型的,如果不转换会报错
//4、赋值运算符
var b:Byte = 12 //注意:赋值只能用变量var,常量val不行,还有注意类型问题,b+=1,这个1是Int类型的
var i = 20
b += 1
i +=1
println(b)
println(i)
五、位运算符
1、基本语法
逻辑 & 与 位运算& 的区别,逻辑&是具有短路的,
下表中a为60,b为13
2、代码示例
位运算符<< 2
往左边移两位,移动几位也就是2的几次方,所以就是结果乘以2的2次方
//5、位运算符
//<< 往左边移动两位,>> 往右边移动两位 移动几位就是2的几次方
val a:Byte = 60 //这种位运算的结果会自动的转换成Int类型的,所以不用担心数值溢出的问题
println(a << 3) // << 往左边移三位,也就是2的三次方,所以结果就是480
println(a>>2) //往右边移动两位,也就事除以2的两次方法,所以结果是15
val bb:Short = -13
println(bb<<2) //还是一样的直接乘以2的次方,结果是-52
println(bb>>2)
6、运算符的本质
在Scala里面一切皆是对象方法,连运算符 `+` 都是一个方法,可以直接`.+` 进行调用
//6、运算符的本质
//Scala中的运算符,本质上都是对象的一个方法调用
//连 + 都是一个对象的方法,相当于是直接调用了,后面那个要加的数就是传入的参数
val n1:Int = 12
val n2:Int = 37
println(n1.+(n2))
println(n1 + n2)