Java 中的操作符 ==
在开始分析之前,我们先来简单回顾一下 Java 中的操作符 == 。
在 Java 中,关于操作符 ==
-
如果是
基本数据类型
比较的是值
; -
如果是
引用数据类型
比较的是地址
。
Kotlin 中的操作符 ==
和 ===
及 equals
- 比较对象的结构是否相等(
==
或者equals
)
Kotlin 中的操作符
==
等价于equals
用于比较对象的结构是否相等(对象的结构就是属性和方法), 很多情况下使用的是==
,因为对于浮点类型 Float 和 Double,其实现方法equals
不遵循 IEEE 754 浮点运算标准。
- 比较对象的引用是否相等 (
===
)
Kotlin 中的操作符
===
用于比较对象的引用是否指向同一个对象,运行时如果是基本数据类型===
等价于==
。
class User(val name: String, val age: Int)
data class Person(val name: String, val age: Int)
class Day15Test {
@Test
fun test1() {
val a = -0
val b = 0
assert(a == b)
}
@Test
fun test2() {
val a = -0f
val b = 0f
assert(a == b)
assert(!a.equals(b))
}
@Test
fun test3() {
val user1 = User("David", 18)
val user2 = User("David", 18)
assert(user1 != user2)
assert(user1 !== user2)
}
@Test
fun test4() {
val person1 = Person("David", 18)
val person2 = Person("David", 18)
assert(person1 == person2)
assert(person1 !== person2)
}
}
网友评论