zoukankan      html  css  js  c++  java
  • Scala之eq,equals,==的区别

    一.简介

      根据官方API的定义:

    • final def ==(arg0: Any): Boolean
      The expression x == that is equivalent to if (x eq null) that eq null else x.equals(that).
    • final def eq(arg0: AnyRef): Boolean
      Tests whether the argument (that) is a reference to the receiver object (this).
    • def equals(arg0: Any): Boolean
      The equality method for reference types.

    二.代码测试

    package big.data.analyse.scala.eq_equals
    
    /**
      * Created by zhen on 2019/4/9.
      */
    case class Bread(brand:String, price:Int)
    
    object EqEquals {
      def main(args: Array[String]) {
        /**
          * 基本类型
          */
        val j1 = "234"
        val j2 = 234.toString
        println(j1 eq j2) // 引用
        println(j1 equals j2) //
        println(j1 == j2) // 当比较的对象为null时等价eq,否则等价equals
        println("---------------------------")
        /**
          * 集合类型
          */
        val a1 = Array("x", "y")
        val a2 = Array("x", "y")
        println(a1 equals a2)
        println(a1 eq a2)
        println(a1 == a2)
        println(a1 sameElements a2)
        val m1 = Map(1->"x", 2->"y")
        val m2 = Map(1->"x", 2->"y")
        println(m1 sameElements m2)
        val m3 = Map(1->"x", 2->"z")
        println(m1 sameElements m3)
        println("===========================")
        /**
          * 引用类型
          */
        val b1 = Bread("BreadTalk", 50)
        val b2 = Bread("BreadTalk", 50)
        println(b1 eq b2) // 引用
        println(b1 equals b2) //
        println(b1 == b2) // 当比较的对象为null时等价eq,否则等价equals
      }
    }

    三.结果

      

  • 相关阅读:
    python2与3自由切换
    ubuntu 安汉google浏览器
    ros 下常用的依赖库
    imu tool使用
    g2o 初始化
    linux 解压缩
    sudo apt-get update 没有公钥,无法验证下列签名
    ceres g2o 安装
    ubuntu 下开源安装
    Nhibernate中 Many-To-One 中lazy="proxy" 延迟不起作用的原因
  • 原文地址:https://www.cnblogs.com/yszd/p/10679681.html
Copyright © 2011-2022 走看看