==
運算符,它將被轉換成equals
**方法的調用。·!=
運算符,它也是調用equals
**方法且它們都是可空運算符。markdown
// 等式校驗「==」被轉換爲「equals」函數的調用,以及null的校驗
a == b ------> a?.equals(b) ?: (b == null)
複製代碼
注意:**
===
**運算符不能被重載ide「==」和「===」區別:
「==」
表示比較值,「===」
表示比較兩個對象的地址是否相等函數
注意:
equals
不能實現爲擴展函數,由於繼承自Any
類的實現始終優先於擴展函數。測試
Kotlin支持相同的Comparable
接口。可是接口中定義的**compareTo
方法能夠按約定調用,比較運算符(<,>,<=,>=
)的使用將被轉換爲compareTo
**。ui
a >= b -----> a.compareTo(b) >= 0
複製代碼
compateTo的返回類型必須爲Int。 p1 < p2
表達式等價於p1.compareTo(p2) < 0
。this
// 定義
class Person(
val firstName: String, val lastName: String
): Comparable<Person>{
override fun compareTo(other: Person): Int {
// 按順序調用給定的方法,並比較它們的值
return compareValuesBy(this, other,
Person::lastName, Person::firstName)
}
}
// 測試
>>> val p1 = Person("Alice", "Smith")
>>> val p2 = Person("Bob", "Johnson")
>>> println(p1 < p2)
false
複製代碼