Scala中的对象相等

Scala中的对象是一个具有状态(数据)和行为(对数据执行函数)的实体。

在像Scala这样的面向对象的程序中,对象是非常重要的部分,因为一切都是对象。比较对象通常是检查其身份的方法。要检查对象是否相等,可用的内置方法是:

  1. ==和!=方法(运算符)

  2. equals方法

  3. ne和eq方法

1)==和!=运算符

为了检查两个对象是否相等,我们在Scala中使用==运算符。此外,还有一个!=运算符与是否定==操作符

程序:

case class employee (empName : String , salary : Integer)

object MyClass {
    def main(args: Array[String]) {
        var emp1 = employee("Prem", 140000)
        var emp2 = employee("Anshu", 200000)
        var emp3 = employee("Prem", 140000)
        var emp4 = emp1

        println("Example of == method")
        println(emp1 == emp2)
        println(emp1 == emp3)
        println(emp1 == emp4)

        println("Example of != method")
        println(emp1 != emp2)
        println(emp1 != emp3)
        println(emp1 != emp4)
    }
}

输出:

Example of == method
false
true
true
Example of != method
true
false
false

在上面的代码中,我们有一个类员工,用于存储empName(存储员工名称)和薪水(希望我的员工可以那么多)。对于此类,我们创建了4个对象。然后,我们使用==方法进行了比较,并获得了这些结果。

emp1 == emp2,返回false。这两个对象具有不同的值。  

emp1 == emp3,返回true。两个对象的值相同。

emp1 == emp4,返回true。两个对象都引用同一个存储块。

我们还比较了==运算符的取反,即!=运算符,结果显然是在==运算符的情况下得到的取反。

2)equals()方法

的equals()方法是一样的==运算符。用于检查两个运算符是否相等。

语法:

object1.equals(object2)

程序:

case class employee (empName : String , salary : Integer)

object MyClass {
    def main(args: Array[String]) {
        var emp1 = employee("Prem", 140000)
        var emp2 = employee("Anshu", 200000)
        var emp3 = employee("Prem", 140000)
        var emp4 = emp1

        println("Example of equals method")
        println(emp1.equals(emp2))
        println(emp1.equals(emp3))
        println(emp1.equals(emp4))
    }
}

输出:

Example of equals method
false
true
true

在上面的代码中,我们说明了scala中equals()方法的工作。我们有一个类员工,存储empName(存储员工姓名)和薪水(希望我的员工可以那么多)。对于此类,我们创建了4个对象。为了比较这些对象,我们使用了equals()方法

emp1.equals(emp2),返回false。这两个对象具有不同的值。

emp1.equals(emp3),返回true。两个对象的值相同。

emp1.equals(emp4),返回true。两个对象都引用同一个存储块。

3)ne()eq()方法

Scala中的ne()eq()方法用于检查两个对象是否引用相同的对象位置,即对于两个对象obj1obj2,当且仅当两个对象都引用相同的内存时,eq()方法才返回true。位置。如果两个对象的值相同,但是它们不引用同一对象,则eq()方法将返回false。

语法:

For eq() method:
	object1.eq(object2)
For ne() method:
	object1.ne(object2)

程序:

case class employee (empName : String , salary : Integer)

object MyClass {
    def main(args: Array[String]) {
        var emp1 = employee("Prem", 140000)
        var emp2 = employee("Anshu", 200000)
        var emp3 = employee("Prem", 140000)
        var emp4 = emp1
        
        println("Example of eq method")
        println(emp1.eq(emp2))
        println(emp1.eq(emp3))
        println(emp1.eq(emp4))
        
        println("Example of ne method")
        println(emp1.ne(emp2))
        println(emp1.ne(emp3))
        println(emp1.ne(emp4))
    }
}

输出:

Example of eq method
false
false
true
Example of ne method
true
true
false

在上面的代码中,我们演示了scala中eq()和ne()方法的工作原理。我们有一个雇员类,它存储empName(存储雇员名)和salary(我希望我的也可以这么多)。对于这个类,我们创建了4个对象。为了比较这些对象的相等性,我们使用了eq()方法:

emp1.eq(emp2),返回false。这两个对象具有不同的值。

emp1.eq(emp3),返回false。两个对象的值相同,但是它们引用的内存块不同。

emp1.eq(emp4),返回true。两个对象都引用同一个存储块。

我们还比较了使用该ne()方法对对象相等性的否定。