μ½νλ¦°μμλ null κ°μ΄ μ§μ λ μ μλ μμκ° μλκ° νλ©΄ κ·Έλ μ§ μμ μμλ μλ€.
nullable
non-nullable
* μλ°λ μ΄λ€ νμ μ λ³μλ null κ°μ κ°μ§ μ μλλ° κ·Έλμ NPE λ‘ μΈν΄ μ±μ΄ ν¬λμ λλ κ²½μ°κ° ννλ€.'
* null κ°μ κ°μ§ μ μλ€κ³ νΉλ³ν μ§μ λμ§ μμΌλ©΄ λ³μκ° Null κ°μ κ°μ§ μ μλ€.
readlineμ ν€λλ λ°ν νμ μ΄ String? μΈλ°, μ΄λ ν΄λΉ νμ μ΄ null κ°λ₯ν¨μ λνλΈλ€.
public fun readline(): String?
μλ μ½λλ μ€λ₯κ° λμ§ μλλ€.
fun main() {
var beverage = readLine()
beverage = null
println(beverage)
}
null κ°λ₯ νμ - String?
null λΆκ°λ₯ νμ - String
μλ¬ κ²μΆ μμ μ΄ μ½νλ¦°μ μ»΄νμΌ μλ¬λ‘ λλ€. μ΄λ μ₯μ .
→ μ»΄νμΌλ¬κ° μλ¬λ₯Ό μ‘μ μ£Όλλ°, λ°λλ‘ λ°νμ μλ¬λ μ»΄νμΌλ¬κ° λ°κ²¬ν μ μμ΄μ νλ‘κ·Έλ¨μ΄ μ»΄νμΌλ μ μ€ν μ€ν΄ λ°μνλ€.
null μμ μ²λ¦¬.
μμ νΈμΆ μ°μ°μλ‘ μ°μμ μΌλ‘ νΈμΆνκΈ°
beverage?.capitalize()?.plus(",large")
κ°μ΄ null μΌ λ μ€νλλκ² λ³΅μ‘νλ€λ©΄ ifμ != μ°μ°μλ₯Ό μ¬μ©ν΄μ null κ²μ¬λ₯Ό νλ€.
// Nullκ°μ μμ νκ² μ²λ¦¬νλ 3κ°μ§ λ°©λ²
/**
* 0. κ°λ₯ν ν null λΆκ°λ₯ νμ
μ¬μ©.
* 1. μμ νΈμΆ μ°μ°μ - ?.
* 2. μμ νΈμΆ μ°μ°μμ ν¨κ» let ν¨μ μ¬μ©νκΈ°
* 3. non=null λ¨μ° μ°μ°μ
* 4. κ°μ΄ null μΈμ§ if λ‘ κ²μ¬νκΈ°
* */
fun main() {
// 1. μμ νΈμΆ μ°μ°μ - ?.
// null κ°μ κ²μ¬νλ μ½λλ₯Ό μλμΌλ‘ μΆκ°ν΄μ€. null μ΄ μλλ©΄ capitalize νΈμΆ/ null μ΄λ©΄ capitalize νΈμΆ μνκ³ κ·Έ λ€μ μ½λ μν
var beverage = readLine()?.capitalize()
println(beverage)
// 2. μμ νΈμΆ μ°μ°μμ ν¨κ» let ν¨μ μ¬μ©νκΈ°
var beverage_1 = readLine()?.let {
if(it.isNotBlank())
{
it.capitalize()
}else{
"λ§₯μ£Ό"
}
}
println(beverage_1)
// 3. non=null λ¨μ° μ°μ°μ !! - μ΄ μ°μ°μλ μ λ nullμ΄ μλμΌ!
var beverage_2 = readLine()!!.capitalize()
println(beverage_2)
// 4. κ°μ΄ null μΈμ§ if λ‘ κ²μ¬νκΈ°
var beverage_3 = readLine()
if(beverage_3 != null){
beverage_3 = beverage_3.capitalize()
}else{
println("Beverageκ° null μ
λλ€.")
}
}
null λ³΅ν© μ°μ°μ - ?: (μ¨λΉμ€ μ°μ°μ)
→ μΌμͺ½ νΌμ°μ°μμ κ²°κ³Όκ° null μ΄λ©΄ μ€λ₯Έμͺ½μ νΌμ°μ°μλ₯Ό μ€ν. nullμ΄ μλλ©΄ μΌμͺ½ νΌμ°μ°μμ κ²°κ³Ό λ°ν.
var beverage_0 = readLine()
// beverage_0 κ°μ΄ nullμ΄ μλλ©΄ beverage_4μ κ·Έ κ°μ΄ μ μ₯λκ³ , null μ΄λ©΄ "λ§₯μ£Ό"κ° λ€μ΄κ°λ€.
var beverage_4:String = beverage_0?:"λ§₯μ£Ό"
println(beverage_4)
μμΈμ²λ¦¬
1. null κ°λ₯ μ μ νμ μ λ³μμ null λ‘ μ μ₯ , swordsJuggling κ°μΌλ‘ μΆλ ₯μ νλ κ²μ΄ μννμ§ μλ€. μ΄μ λ null κ°μ΄λλΌλ μ½μλ‘ μΆλ ₯ν μ μκΈ° λλ¬Έ.
2. Throw ν€μλλ‘ μμΈ λμ§κΈ°
3. 컀μ€ν μμΈ μ μνκΈ°
4β . try / catch - try λΆλΆμ νμ μ€ν. catch λ μμΈκ° μκΈΈ λλ§ μ€νλ¨.
μ μ 쑰건 ν¨μ
μ½νλ¦°μμλ νμ€ λΌμ΄λΈλ¬λ¦¬ μΌλΆλ‘ νΈμ ν¨μλ€μ μ 곡νλ€. μ΄ ν¨μλ₯Ό μ¬μ©νλ©΄ 컀μ€ν λ©μμ§μ ν¨κ³ μμΈλ₯Ό λμ§ μ μλ€.
ex ) checkNotNull μ μ 쑰건 ν¨μλ₯Ό μ¬μ©νλ©΄ μ΄ κ°μ΄ NullμΈμ§ κ²μ¬ν ν null μ΄ μλλ©΄ κ·Έ κ°μ λ°ν. nullμ΄λ©΄ IllegalStateException λ°μμν΄.
null 무μμ΄ μ’λ ?
null μ μ¬μ©ν΄μ μν λνλ΄λ κ²μ ννλ€. μ¬λλ λν΄νΈ μ΄λ¦μ μμΌλ.
checked μμΈ, unchecked μμΈ
λ€λ₯Έ μΈμ΄μ μ½λλ₯Ό κ°μ΄ μ¬μ©ν λμ null μ²λ¦¬
: @Nonnull νμ
λ¬Έμμ΄
https://www.androidhuman.com/2016-12-30-kotlin_string
substring
val indexOfAppstrophe = TAVERN_NAME.indexOf('\'')
val travernMaster = TAVERN_NAME.substring(0 until indexOfAppstrophe)
split (리μ€νΈλ₯Ό λ°νν΄μ "ν΄μ²΄ μ μΈ" μ΄λΌλ κ°λ¨ν λ¬Έλ²λ μ§μνλ€.)
val data = menuData.split(',')
μ«μ νμ
'Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Kotlin_Map / Class (0) | 2021.07.01 |
---|---|
Kotlin - Scope ν¨μ & Listμ Set (0) | 2021.06.30 |
Kotlin - μ΅λͺ ν¨μμ ν¨μ νμ (1) | 2021.06.30 |
Navigation - jetpack / kotlin xml μμ μ°Έμ‘° / μμ μ°Έκ³ - Kotlin κΈ°λ³Έ λ¬Έλ² κ³΅λΆ μΌμ§ (0) | 2021.06.29 |
Kotlin κΈ°λ³Έ λ¬Έλ² - Intro ( κΉμ΄ λ€λ£¨μ§ μμ!) (0) | 2021.06.28 |
λκΈ