学习链接:https://www.bilibili.com/video/BV1Xh411S7bP?p=28&spm_id_from=pageDriver
1 算术运算符
Scala运算符的使用和Java运算符使用基本相同
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
// 算术运算符
// 整数除法,默认Int
val result1 = 10 / 3
println(result1) // 3
val result2: Double = 10 / 3
println(result2) // 3.0
val result3: Double = 10.0 / 3
println(result3) // 3.3333333333333335
println(result3.formatted("%5.2f")) // 3.33
}
}
2 关系运算符(比较运算符)
== != < > <= >=
- Java的== ```java String s1 = “hello”; String s2 = new String(“hello”);
Boolean isEqual = s1 == s2; System.out.println(isEqual); // false 比较地址 System.out.println(s1.equals(s2)); // true 比较内容
- Scala的==
```scala
val s1: String = "hello"
val s2: String = new String("hello")
println(s1 == s2) // true 相当于调用了equals()方法,比较内容
println(s1.equals(s2)) // true
println(s1.eq(s2)) // false 比较地址
3 逻辑运算符
&& || !
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
// 判断一个字符串是否为空
def isNotEmpty(str: String): Boolean = {
// 短路与,避免字符串为空
return str != null && !("".equals(str.trim))
}
println(isNotEmpty(null)) // false
}
}
4 赋值运算符
= += -= *= /= %=
<<= 左移后赋值
>>= 右移后赋值
&= 按位与后赋值
^= 按位异或后赋值 (异或:相同为0,不同为1)
|= 按位或后赋值
scala中没有++、—操作符
5 位运算符
& | ^ ~
<< 左移运算符 a=60(0000 0000 0011 1100),a<<2,左移两位0000 0000 1111 0000,240
>> 右移运算符 a=60(0000 0000 0011 1100),a>>2,右移两位0000 0000 0000 1111,15
>>> 无符号右移 a=60(0000 0000 0011 1100),a>>>2,右移两位0000 0000 0000 1111,15
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
val a: Byte = 60
println(a << 3) // 480,会自动转成Int,不会溢出
val b: Short = -13 // 11110011 补码
println(b << 2) // -52 符号位不变 1100 1100 补码 1011 0100 源码
println(b >> 2) // -4
println(b >>> 2) // 1073741820
}
}
6 Scala运算符本质
Scala中所有运算符都是方法
object Test01_TestOperator {
def main(args: Array[String]): Unit = {
val n1: Int = 12
val n2: Int = 37
// 加法运算
println(n1.+(n2))
// 调用对象的方法时,省略.
println(n1+(n2))
// 如果参数只有一个或没有参数,()可以省略
println(n1+n2)
}
}