基本类型和操作之对象相等性
博客专区 > 柳哥 的博客 > 博客详情
基本类型和操作之对象相等性
柳哥 发表于4年前
基本类型和操作之对象相等性
  • 发表于 4年前
  • 阅读 74
  • 收藏 1
  • 点赞 0
  • 评论 0

如果想要比较一下看看两个对象是否相等,可以使用==,或它的反义 != 。如例:


这些操作对所有对象都起作用,而不仅仅是基本类型。例如可以用它来比较列表:

进一步,还可以用来比较不同类型的两个对象:

甚至可以比较null或任何可能是null的东西不会有任何异常被抛出

如上所示,==已经被仔细地加工过,因此在多数情况下都可以实现合适的相等性比较。这种比较遵循一种非常简单的规则:首先检查左侧是否为null,如果不是,调用左侧操作数的equals方法。而精确的比较取决于左操作数的equals方法定义。由于有了自动的null检查,因此不需要手动再检查一次了。注意,看下面这个例子:

好像变量确定了类型之后,再比较null的相等性,才不会报警告!!

这种比较即使发生在不同的对象之间也会产生true只要比较的两者内容相同并且equals方法是基于内容编写的。例如,以下是恰好都有五个相同字母的两个字符串的比较:


Scala的==与Java的有何差别
Java里==既可以比较原始类型也可以比较引用类型。对于原始类型,java的==比较值的相等性与scala一致。而对于引用类型,Java的==比较了引用的相等性,也就是说比较的是这两个变量是否都指向JVM堆里的同一个对象。Scala也提供了这种机制,名字是:eq 。不过,eq 和它的反义词 ne,仅仅应用于可以直接映射到Java的对象,这个我们后面在讲解。可以看下示例:

object T4 {
    class A{}
    def main(args: Array[String]): Unit = {
        val a = new A
        val b = new A
        println(a == b)    //false
        println(a eq b)    //false
        println(a ne b)    //true
        println(a.eq(b))   //false
    }
}


标签: scala
共有 人打赏支持
粉丝 200
博文 394
码字总数 347782
×
柳哥
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: