팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (1)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • TestCode
  • binding
  • 정렬
  • 의존성 주입
  • ArcitecturePattern
  • 하단네비게이션바
  • 자바
  • compose
  • 완전탐색
  • 실버
  • 백준
  • 구현
  • CustomView
  • 골드
  • LEVEL2
  • programmers #프로그래머스
  • 프로그래머스
  • BFS
  • 이분탐색
  • mvvm
  • 안드로이드
  • Kotlin
  • flutter
  • java
  • 해쉬맵
  • DFS
  • programmers
  • 문자열
  • Android
  • 코틀린

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[Kotlin] - 코틀린 기본 문법 2
Kotlin

[Kotlin] - 코틀린 기본 문법 2

2022. 7. 8. 15:00

기본 문법2 (?:, ?., as?, !!, lateinit)

엘비스 ?: 연산자

fun main(args: Array<String>){
    var fishFood : Int? = null

    fishFood = fishFood?.dec() ?: 0

    println(fishFood)
}
fun main(args: Array<String>){
    var yts: String? = null

    fun elvis() {
        val name: String = yts ?: "YTS"

        val nameTwo: String = yts ?: return //함수자체를 return 시키도록 만들 수 도 있음

        val nameThree: String = yts ?: throw NullPointerException()
    }
}

엘비스 연산자는 널 값을 허용하지 않는 변수에 널 값이 들어갔을 때 null 값을 변환할 수 있는 결과를 만들어줌


안전한 호출 ?. 연산자

class Names {  
    var name: String? = null  

}  

class Safe {  

    fun safeGetName() {  
        val names: Names? = Names()  

        val name: String = names?.name ?: "No Name"  

  print(name)  
    }  
}
fun main(args: Array<String>){
    var fishFood = 6

    if(fishFood != null)
        fishFood = fishFood.dec()

    println(fishFood)

    var fishFood2 : Int? = 5

    fishFood2 = fishFood2?.dec()

    println(fishFood2)
}

위 처럼 if 문을 사용해 null 이 아니면 값을 줄이는 코드를 아래와 같이 ? 를 사용하여 한 줄로 줄일 수 있다.


널 값 보증 !! 연산자

fun nonNull() {  
    val animal: String = "호랑이"  

  val animalName: String = animal!! // animal은 절대 null값이 아니기 때문에 !!연산자로 보증  
}

상황에 따라 Null이 아닌 값만 포함되는 경우가 생길 수 있다.

그럴 때 널 값이 안 들어온다는 보증을 해주는 !!연산자.

널 값이 들어오면 오류 발생


나중 초기화를 위한 lateinit 키워드

lateinit var name: String

클래스에서 변수를 만들 때에 상황에 따라 나중에 따로 초기화를 수행하는 경우가 생긴다.

그럴 때 사용되는 키워드가 lateinit 키워드이며, lateinit 키워드를 사용하면 초기화 없이 변수 설정이 가능해짐


안전한 자료형 변환 as? 연산자

class As {

    fun As() {
        val animal: String = "호랑이"

        val value: Int = animal as? Int ?: 0 //Int 로 변환 할 수 없으므로 0으로 초기화된다.

        print(value)
    }
}

fun main(array: Array<String>){
    As().As()
}

as? 연산자는 자료형 변환에 대해 안전하게 변환 할 수 있도록 도와준다.

'Kotlin' 카테고리의 다른 글

Android Kotlin - DIP(Dependency Inversion Principle)이란?  (0) 2023.07.14
Android - Kotlin으로 RecyclerView 구현하기  (0) 2022.07.29
[Kotlin] - 코틀린 기본 문법 4  (0) 2022.07.10
[Kotlin] - 코틀린 기본 문법 3  (0) 2022.07.09
[Kotlin] - 코틀린 기본 문법 1  (0) 2022.07.08
    'Kotlin' 카테고리의 다른 글
    • Android - Kotlin으로 RecyclerView 구현하기
    • [Kotlin] - 코틀린 기본 문법 4
    • [Kotlin] - 코틀린 기본 문법 3
    • [Kotlin] - 코틀린 기본 문법 1
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바