Scala对象的相等,equals,==,!=,eq,ne,sameElements方法

时间:2022-11-14 16:19:38

     
    // Array的相等和List的相等,以及sameElemts方法
    Array(1,2,3)==Array(1,2,3)    // false
    Array(1,2,3).sameElements(Array(1,2,3))  // true
   
    List(1,2,3)==List(1,2,3)    // true
    List(1,2,3).sameElements(List(1,2,3))     // true

    

   //#################
    case class People(name:String,age:Int)
    val p1=People("wx",30)
    val p2=People("wx",30)
    val p3=People("wxx",60)
   

  ==是通过equals方法来实现的,而!=是通过!equals来实现的
    // equals比较值的相等
    p1.equals(p1)    // true
    p1.equals(p2)    // true
    p1.equals(p3)    // false
    p1.equals(null)   // false
    null.equals(null)  // java.lang.NullPointerException
    p1.equals(None)  // false
    None.equals(None)// true
   
    // ==比较值的相等
    p1==p1      // true
    p1==p2      // true
    p1==p3      // false
    p1==null     // false
    null==null    // warning: 永远为true
    p1==None    // warning: 永远为false
    None==None  // true

 

   
    // !=比较值的不相等
    p1!=p1      // false
    p1!=p2      // false
    p1!=p3      // true
    p1!=null     // true
    null!=null    // false
    p1!=None    // warning: 永远为true
    None!=None  // false
   
    //##########################
   
    // eq比较引用的相等,是否在内存中指向同一个位置
    p1.eq(p1)      // true
    p1.eq(p2)      // false
    p1.eq(p3)      // false
    p1.eq(null)     // false
    null.eq(null)    // warning: 永远为true
    p1.eq(None)    // warning: 永远为false
    None.eq(None)  // true
   
    // ne比较引用的不相等,是否在内存中指向不同的位置
    p1.ne(p1)      // false
    p1.ne(p2)      // true
    p1.ne(p3)      // true
    p1.ne(null)     // true
    null.ne(null)    // false
    p1.ne(None)    // warning: 永远为true
    None.ne(None)  // false