在 Kotlin 中,變數預設是不可變的 (val
),如果需要改變值,就要用 var
。
var
代表 可變變數,可以在賦值後修改,例如:
kotlin
複製編輯var name = "Tom"
name = "Jerry" // ✅ 可以更改
val
代表 不可變變數,一旦賦值後就無法修改,例如:
kotlin
複製編輯val age = 25
age = 30 // ❌ 這行會報錯,因為 val 不能重新賦值
📌 小提醒:能用 val
就用 val
,這樣可以提升程式的安全性和效能。
!!
vs ?
(空值處理)Kotlin 預設不允許變數為 null
,但如果有需要,可以使用 ?
來允許變數為 null
。
當變數可能為 null
,需要在型別後加上 ?
:
kotlin
複製編輯var item: String? = null // 允許 item 為 null
如果要存取 null
變數的屬性,可以使用 安全呼叫運算子 (?.
),避免 NullPointerException
:
kotlin
複製編輯println(item?.length) // 如果 item 為 null,不會崩潰,會回傳 null
當你「確定」變數不為 null
,可以使用 !!
強制解開:
kotlin
複製編輯println(item!!.length) // 如果 item 是 null,會拋出 NullPointerException!
📌 建議:盡量避免使用 !!
,以防程式發生錯誤,應優先使用 ?.
來進行安全處理。
when
取代 switch
Kotlin 沒有 switch
,而是用更強大的 when
來處理多條件判斷。
基本用法:
kotlin
複製編輯val randomNumber = (1..5).random()
when(randomNumber) {
1 -> println("一")
2 -> println("二")
3 -> println("三")
4 -> println("四")
5 -> println("五")
}
使用範圍 (in
):
kotlin
複製編輯val randomNumber = (1..20).random()
when(randomNumber) {
in 1..5 -> println("一")
in 6..10 -> println("二")
in 11..15 -> println("三")
in 16..20 -> println("四")
}
📌 優點:when
比 switch
更靈活,可用於數字、字串、條件判斷、型別檢查等,寫法更簡潔。
在 Java 需要使用 StringBuilder
來組合字串,而在 Kotlin,可以直接用 $
來插入變數,使字串組合更直覺簡潔。
插入變數:
kotlin
複製編輯val startDate: String = "06/01"
val endDate: String = "06/05"
val text = "$startDate ~ $endDate"
println(text) // 輸出:06/01 ~ 06/05
插入運算式:
kotlin
複製編輯val start: Int = 2
val end: Int = 5
val text = "2+5=${start + end}"
println(text) // 輸出:2+5=7
📌 優點:字串拼接更直覺,避免 Java +
字串拼接的繁瑣寫法。