scala中的==、equals、eq

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

猜你喜欢

转载自my.oschina.net/u/2000675/blog/1802271