scala equals == != eq ne 測(cè)試
case class User(name: String, age:Int)
val u1 = User("zhang", 18)
val u2 = User("zhang", 18)
val u3 = User("zhang", 19)
// equals: 用來(lái)測(cè)試值是否相等
println("===== test equals ======")
println(u1 equals u1)
println(u1 equals u2)
println(u2 equals u1)
println(u1 equals u3)
// 特殊情況
// null是無(wú)意義的,不存在值顽冶,因此運(yùn)行時(shí)空指針異常
// println(null equals null)
// ==: 在Any中定義為final颂暇,代表equals敞咧。所以==的行為 與 equals的完全一樣,都是用來(lái)測(cè)試值是否相等
println("===== test == ======")
println(u1 == u1)
println(u1 == u2)
println(u2 == u1)
println(u1 == u3)
//特殊情況: null 在 == 的左邊的時(shí)候
println(null == u1)
// 返回值為true斜筐。但是會(huì)提示編譯警告,這永遠(yuǎn)為true
println(null == null)
// !=: 與 == 相反的操作必指,用于判斷表示值不相等
println("===== test != ======")
println(u1 != u1)
println(u1 != u2)
println(u2 != u1)
println(u1 != u3)
//特殊情況: null 在 == 的左邊的時(shí)候
println(null != u2)
// 返回值為false括饶。但是會(huì)提示編譯警告株茶,這永遠(yuǎn)為true
println(null != null)
// eq and ne:用于測(cè)試引用的相等性,即兩個(gè)對(duì)象的是否指向相同的內(nèi)存地址图焰。這兩個(gè)方法至對(duì)AnyRef類型有定義
// 參見(jiàn):http://scala-lang.org/api/2.10.4/#scala.AnyRef
println("===== test eq ======")
println(u1 eq u1)
println(u1 eq u2)
println(u2 eq u1)
println(u1 eq u3)
val u4 = u1
println(u4 eq u1)
// ne: 與eq相反启盛,即與 !(u1 eq u1)等價(jià)
println("===== test ne ======")
println(u4 ne u1)
println(u1 ne u2)
// 數(shù)組相等,sameElements
// Array 是可變的原始Java數(shù)組技羔,與scala中的習(xí)慣使用的集合類型有不同的方法僵闯。建議使用scala的序列。
println("===== test sameElements ======")
val a1 = Array(1, 2)
val a2 = Array(1, 2)
println(a1 == a2)
println(a1 sameElements a2)
/** 運(yùn)行結(jié)果
e:\BaiduYunPanRsync\work\juanpi\dev\scala-code\equals-eq.scala:30: warning: comparing values of types Null and Null using `==' will always yield true
println(null == null)
^
e:\BaiduYunPanRsync\work\juanpi\dev\scala-code\equals-eq.scala:43: warning: comparing values of types Null and Null using `!=' will always yield false
println(null != null)
^
two warnings found
===== test equals ======
true
true
true
false
===== test == ======
true
true
true
false
false
true
===== test != ======
false
false
false
true
true
false
===== test eq ======
true
false
false
false
true
===== test ne ======
false
true
===== test sameElements ======
false
true
*/
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者