'?', '?.', '?:', '!!'λ
μ½νλ¦°μμ λ (null) μ²λ¦¬μ κ΄λ ¨λ μ°μ°μ λ° ννλ²μ λλ€.
?
μ½νλ¦°μμ ?λ₯Ό νμ λ€μ λΆμ΄λ©΄ ν΄λΉ λ³μλ μμ±μ null κ°μ κ°μ§ μ μλ nullable νμ μ΄ λ©λλ€. μ΄κ²μ ν΄λΉ λ³μκ° κ°μ κ°κ±°λ nullμΌ μ μλ€λ κ²μ λͺ μμ μΌλ‘ λνλ λλ€.
//1
val str: String = null //μλ¬
//2
val str: String? = null //μ€ν κ°λ₯
?.(Null Safe Call Operator)
μ½νλ¦°μ ?. μ°μ°μλ λ μμ μ±μ μ 곡νκΈ° μν΄ μ¬μ©λλ μ°μ°μμ λλ€. μ΄ μ°μ°μλ κ°μ²΄κ° nullμ΄ μλ κ²½μ°μλ§ λ©μλλ₯Ό νΈμΆνκ±°λ μμ±μ μ κ·Όν©λλ€. κ°μ²΄κ° nullμΈ κ²½μ°μλ μμΈλ₯Ό λ°μμν€μ§ μκ³ κ·Έλλ‘ nullμ λ°νν©λλ€.
//1
val str: String? = "abc"
print(str?.length) //3
//2
val str: String? = null
print(str?.length) //null
?:(Elvis Operator)
μ½νλ¦°μ ?: μ°μ°μλ nullμ΄ μλ κ²½μ°μλ μΌμͺ½μ ννμμ λ°ννκ³ , nullμΈ κ²½μ°μλ μ€λ₯Έμͺ½μ ννμμ λ°νν©λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ¨νκ² null 체ν¬μ κΈ°λ³Έκ° μ€μ μ λμμ μνν μ μμ΅λλ€.
//1
val name: String? = "John"
val result = name ?: "DefaultName"
println("Result: $result") //Result: John
//2
val nullableName: String? = null
val result2 = nullableName ?: "DefaultName"
println("Result2: $result2") //Result2: DefaultName
!!(Non-Null Assertion Operator)
μ½νλ¦°μ !! μ°μ°μλ λ³μλ ννμμ΄ nullμ΄ μλμ λͺ μμ μΌλ‘ κ°μ νκ³ ν΄λΉ κ°μ λ°νν©λλ€. κ·Έλ¬λ λ§μ½ μ€μ λ‘ ν΄λΉ κ°μ΄ nullμ΄λΌλ©΄ NullPointerExceptionμ΄ λ°μν μ μμ΅λλ€.
//1
val name: String? = "John"
val length: Int = name!!.length
println("Name length: $length") //Name length: 4
//2
val nullableName: String? = null
val nullableLength: Int = nullableName!!.length
println("Nullable Name length: $nullableLength") //NullPointerException
'Kotlin > Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kotlin] if / when (0) | 2024.02.03 |
---|---|
[Kotlin] νμ μΆλ‘ (0) | 2024.02.01 |
[Kotlin] var / val (0) | 2024.02.01 |