scala中eq、equals和==的区别

说明

  • equals 比较的是值是否相等

  • eq 比较的是 地址是否相等

  • ==,如果比较的对象是null,调用的是 eq 方法,如果比较的对象不是null,调用的是 equals 方法

在java中如果要对两个对象进行值比较,那么必须要实现 equals 和hashCode 方法。而在scala中为开发者提供了 case class,默认实现了 equals 和 hashCode 方法

例子

val s:String = new String("1")
val s2 = new String("1")

println(s.equals(s2))
println(s.eq(s2))
println(s == s2)

执行结果:

true
false
true

原文出处:/show_1IX1KigEeNFu.html