Kotlin Day 3 : null 和 安全運算子 ? 和 Elvis運算子 ?:

 Kotlin 總綱


--

Kotlin的null安全性與Java的差異

在程式設計中,null是一個特殊的值,用來表示變數不指向任何有效的對象。Kotlin和Java都使用null來表示這種狀態,但它們對null的處理方式有著根本的不同。


Kotlin的null安全性

Kotlin語言設計時考慮到了null所帶來的問題,並在語言的類型系統中引入了null安全性。Kotlin的類型系統將變數分為可空類型和不可空類型:

  • 不可空類型:例如,String類型的變數不能被賦值為null。如果嘗試這樣做,編譯器會報錯,這樣可以在編譯階段捕獲潛在的錯誤。

        var str: String = null // 編譯錯誤

  • 可空類型:如果需要允許變數為null,則必須在類型後加上問號?,例如String?。這樣的變數可以安全地被賦值為null

  • var str: String? = null // 合法

Kotlin的設計使得開發者在使用可空類型時必須明確處理null,例如使用安全調用操作符?.來避免空指針異常,這樣可以有效減少運行時錯誤的發生。


Java中的null

相對而言,Java的null處理較為寬鬆,所有的引用類型變數都可以被賦值為null,這使得開發者在使用時需要額外小心,以避免NullPointerException(NPE)。在Java中,null是一個關鍵字,表示一個對象引用未指向任何有效的對象。這意味著開發者在使用Java時,必須在運行時進行null檢查,以確保變數不會在未初始化的情況下被使用。


? 是安全呼叫運算子

?: 是Elvis 運算子 : wiki ; 當左邊值為 null 時, 回右邊值, 否則回左邊值


可空類型與安全呼叫運算子在Kotlin中的使用情境

在Kotlin中,變數可以被宣告為可空類型(nullable type),這意味著該變數可以持有null值。這種設計使得開發者能夠更靈活地處理可能不存在的值,並且通過使用安全呼叫運算子?.來避免空指針異常(NullPointerException)。以下是一些情況,說明何時使用可空類型及其安全呼叫運算子會比不可空類型更恰當。

1. 當變數的值不確定時

在某些情況下,變數的值可能來自於外部來源,例如用戶輸入或API回應,這些值可能是null。在這種情況下,將變數宣告為可空類型是合適的,因為這樣可以避免在未檢查值是否為null的情況下直接使用它。

範例


結果: 


2. 當需要處理可選值時

在某些情況下,變數可能代表一個可選的值,例如配置選項或查詢結果。使用可空類型可以清楚地表達這種可選性。

範例







結果: 



3. 當需要避免冗長的空檢查時

使用可空類型和安全呼叫運算子可以減少冗長的空檢查代碼,使代碼更簡潔易讀。

範例

承 2 , 




結果: 



程式: github










留言

熱門文章