==
运算符,它将被转换成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
复制代码