scala中equals方法和==是检查值是否相等,而eq方法检查的是引用是否相等。
Scala 的==与Java的有何差别
Java 里的既可以比较基本类型也可以比较引用类型。对于基本类型,Java 的==比较 值比较,如Scala。然而对于引用类型,Java 的==比较了引用的是否为同一个对象(比较内存地址),也就是说这两个变量是否都指向于JVM 堆里的同一个对象。Scala 也提供了这 种机制,名字是 eq。不过,eq和它的反义词,ne,仅仅应用于 可以直接映射到Java的对 象。 |
在java中如果要对两个对象进行值比较,那么必须要实现equals 和hashCode方法。而在scala中为开发者提供了case class,默认实现了equals 和hashCode方法。
case class Student(){}
val stu1 = new Student()
val stu2 = new Student()
println(stu1 == stu2)
println(stu1.eq(stu2))
println(stu1.equals(stu2))
val num1 = 10
val num2 = 10
println(num1 == num2)
// println(num1.eq(num2)) eq只能比较引用类型
println(num1.equals(num2))
输出结果如下:
true
false
true
true
true