Kotlin == and === 的區別


Kotlin == and === 的區別

在 Kotlin 中,===== 兩種操作符用於比較對象,但它們的用途和行為有重要的區別:

1. ==(內容相等)

  • 用途== 在 Kotlin 中用於比較兩個對象的內容或值是否相等。實際是等價於 java 的 equals() 方法,實際上在內部也是直接調用 equals()

  • 行為:當你使用 == 來比較兩個對象時,Kotlin 內部會檢查這兩個對象是否內容是否相同。

  • 範例

    class Person(val name: String, val age: Int)
    
    val a = Person("Alice", 25)
    val b = Person("Alice", 25)
    println(a == b) // true
    

2. ===(參考相等)

  • 用途=== 用於比較兩個對象的引用是否相同,即它們是否指向內存中的同一個位置。

  • 行為:這種比較不涉及到對象內容的比較,只是簡單地檢查兩個對象的引用 address 是否一致。即使兩個對象內容完全相同,但它們在內存中的位置不同,=== 比較的結果也是 false

  • 範例

    val a = Person("Alice", 25)
    val b = a
    val c = Person("Alice", 25)
    println(a === b) // true,因為 b 是 a 的一個引用
    println(a === c) // false,儘管 c 和 a 的內容相同,但它們是不同的對象實例
    

總結

  • 使用 == 時,你在比較兩個對象的“內容”是否相等。
  • 使用 === 時,你在比較兩個對象的“參考”是否相同。

這種區分在很多編程語言中都存在(如 JavaScript 的 == vs ===),而在 Java 中,== 用於基本數據類型的值比較和引用類型的引用比較,對象內容比較則通過 .equals() 方法實現,Kotlin 的 == 實質上是對 Java 的 .equals() 方法的一個封裝和簡化。


WRITTEN BY
Aki

熱愛寫code的開發者,專注於 Android 手機 Native App 開發,對於 IOS 也有涉略。閒暇之餘也學習 JavaScript 等前端框架