【Scala】Scala核心知识点总结(3) | 运算符

文章目录

  • ⌘ 算数运算符
  • ⌘ 关系运算符
  • ⌘ 赋值运算符
  • ⌘ 逻辑运算符
  • ⌘ 位运算符
  • ⌘ 运算符本质

  • scala运算符的使用和Java运算符的使用基本相同,只有个别细节上不同。

⌘ 算数运算符

  • 假定变量 A 为 10,B 为 20

【Scala】Scala核心知识点总结(3) | 运算符_第1张图片

⌘ 关系运算符

  • 假定变量A为10,B为20

【Scala】Scala核心知识点总结(3) | 运算符_第2张图片

  • 思考一个问题:如下代码执行结果如何?
val a = new String("abc")
val b = new String("abc")
println(a == b)
println(a.equals(b))
  1. Java:F、T
  2. Scala:T、T
  3. 进行反编译:
    【Scala】Scala核心知识点总结(3) | 运算符_第3张图片
// 用eq其实才是Java中的==,比较对象的内存地址
public void main(final String[] args) {
   String a = new String("abc");
   String b = new String("abc");
   .MODULE$.println(BoxesRunTime.boxToBoolean(a == b));
}
// 用==,比较地址中的内容,类似于equals方法,并进行了非空判断,防止空指针异常
String a = new String("abc");
String b = new String("abc");
var10000 = .MODULE$;
if (a == null) {
   if (b == null) {
      break label16;
   }
} else if (a.equals(b)) {
   break label16;
}
// 用a.equals(b),相比==,少了非空判断,很少使用
public void main(final String[] args) {
   String a = new String("abc");
   String b = new String("abc");
   .MODULE$.println(BoxesRunTime.boxToBoolean(a.equals(b)));
}

⌘ 赋值运算符

【Scala】Scala核心知识点总结(3) | 运算符_第4张图片

  • 思考一个问题:为什么在上面的运算符中没有看到 ++, --?
  • Scala中没有++和–的操作,因为有歧义,使用+=来替代

⌘ 逻辑运算符

  • 假定变量 A 为 1,B 为 0

【Scala】Scala核心知识点总结(3) | 运算符_第5张图片

⌘ 位运算符

A = 0011 1100
B = 0000 1101

【Scala】Scala核心知识点总结(3) | 运算符_第6张图片

  • 如果指定 A = 60; 及 B = 13; 两个变量对应的二进制为
A = 0011 1100 B = 0000 1101
  • 位运算有啥用?你用过吗或你接触过吗?

  • HashMap、Redis等框架都是通过与1相与来进行数据均分,使每个位置数据不倾斜

⌘ 运算符本质

  • 在Scala中其实是没有运算符的,所有运算符都是方法。
  • scala是完全面向对象的语言,所以数字其实也是对象
  • 当调用对象的方法时,+也是方法,方法名就是这符号,点.可以省略而已
  • 如果函数参数只有一个,或者没有参数,()可以省略
object ScalaOper {
    def main(args: Array[String]): Unit = {
        val i : Int = 10
        val j : Int = i.+(10)
        val k : Int = j +(20)
        val m : Int = k + 30
        // 字符串:
        val str: String = "abc".*(2)
         println(str)//abcabc
        println(m)//70
    }
}

在这里插入图片描述

用博客见证成长,用行动证明我在努力。
如果你有缘看到我博客,对你有帮助、喜欢博客内容,请“点赞” “评论”“收藏”一键三连表示支持哦!

你可能感兴趣的:(#,Scala)