코틀린

[Youtube DiMo] 22강. Null

iseohyun 2022. 4. 29.

목차

    [22강] https://youtu.be/Ae_D4Wb8OhI

     

    1. Null 처리

    ?. : null safe operator - 만약 Null이 아니면(= 안전하다면) 실행
    ?: : elvis operator - 만약 Null이면(=위험하면) 다른 옵션으로 바꿔서 실행
    !!. : non-null assertion operator - 그냥 해줘 (에러날 수 있음)
    fun main() {
        var str : String? = null
        
        println(str?.length)
        println(str?:"default".length)
        println(str!!.length)
    }
    /*
    ?. : null safe operator
    ?: : elvis operator
    !!. : non-null assertion operator
    */
    null
    7
    Exception in thread "main" java.lang.NullPointerException
     at FileKt.main (File.kt:6) 
     at FileKt.main (File.kt:-1) 
     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (:-2)

     

     

    2. 동일한가? (===연산자)

    fun main() {
        var a = Person("김철수", 18)
        var b = Person("김철수", 18)
       	var c = a
        var d = Person("김영희", 18)
        
        println(a==b) // 내용은 같지만,
        println(a===b) // 다른 사람임
        
        println(a==c) // 내용도 같고
        println(a===c) // 같은 사람
        
        println(a==d) // 다른 사람
        println(a===d)
    }
    
    class Person(var name : String, var age : Int) {
        // ==를 재정의 함
        override fun equals(other: Any?) : Boolean {
            if(other is Person){
                return other.name == name && other.age == age
            }else{
                return false
            }
        }
    }
    true
    false
    true
    true
    false
    false

    '코틀린' 카테고리의 다른 글

    [Youtube DiMo] 24강. 내부클래스  (0) 2022.04.30
    [Youtube DiMo] 23강. 함수  (0) 2022.04.30
    [Youtube DiMo] 21강. 문자열  (0) 2022.04.29
    [Youtube DiMo] 20강. 리스트  (0) 2022.04.29
    [Youtube DiMo] 19강. 제네릭  (0) 2022.04.29

    댓글