scala中equals方法和==是检查值是否相等,而eq方法检查的是引用是否相等。java
Scala 的==与Java的有何差异spa
Java 里的既能够比较基本类型也能够比较引用类型。对于基本类型,Java 的==比较 值比较,如Scala。然而对于引用类型,Java 的==比较了引用的是否为同一个对象(比较内存地址),也就是说这两个变量是否都指向于JVM 堆里的同一个对象。Scala 也提供了这 种机制,名字是 eq。不过,eq和它的反义词,ne,仅仅应用于 能够直接映射到Java的对 象。 |
在java中若是要对两个对象进行值比较,那么必需要实现equals 和hashCode方法。而在scala中为开发者提供了case class,默认实现了equals 和hashCode方法。scala
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))
输出结果以下:code
true false true true true