[Kotlin] ? / ?. / ?: / !!

2024. 2. 3. 19:10Β·Kotlin/Kotlin

'?', '?.', '?:', '!!'λž€

μ½”ν‹€λ¦°μ—μ„œ 널 (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
'Kotlin/Kotlin' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Kotlin] if / when
  • [Kotlin] νƒ€μž… μΆ”λ‘ 
  • [Kotlin] var / val
Huijinn
Huijinn
πšπšŽπšŒπš˜πšπš’πš—πš π™³πšŽπšŸπšŽπš•πš˜πš™πš–πšŽπš—πš πš‚πšπšžπšπš’ πŸ“
  • Huijinn
    π——π—˜π—©π—œπ—‘π—¦π—œπ—šπ—›π—§
    Huijinn
    GitHub
    • λΆ„λ₯˜ 전체보기 (16)
      • Java (0)
        • Java (0)
        • πŸ“• μžλ°”μ˜ μ‹  (0)
      • Kotlin (5)
        • Kotlin (4)
        • πŸ“• Kotlin In Action (1)
      • Spring (3)
        • Spring (1)
        • Spring Cloud (0)
        • JPA (2)
      • DB (1)
      • CS (2)
        • λ„€νŠΈμ›Œν¬ (1)
        • πŸ“• 면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ (0)
        • 기타 (1)
      • Docker (2)
      • μ•„ν‚€ν…μ²˜ & λ””μžμΈ νŒ¨ν„΄ (1)
      • 섀계 (1)
      • ν”„λ‘œμ νŠΈ (1)
        • 🌱 timebean ν”„λ‘œμ νŠΈ (0)
        • πŸ›΅ μŒμ‹ 배달 μ•± ν”„λ‘œμ νŠΈ (1)
      • memo (0)
  • 졜근 κΈ€

  • hELLO Β· Designed By μ •μƒμš°. v4.10.4
Huijinn
[Kotlin] ? / ?. / ?: / !!
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”