지금까지 코틀린 기본세팅을 진행했다.
2022.01.29 - [Kotlin] 코틀린 기본개념 - 코틀린이란? 도대체 왜 쓰는가? 특징!
2022.01.28 - [Kotlin] 코틀린 환경설정 - Intellj에서 코틀린 프로젝트 생성하기
2022.01.29 - [Kotiln] Intellj에서 코틀린 코딩컨벤션 Kotlin Style Guide 적용하기
2022.01.30 - [Kotiln] 코틀린 실행하기 - Scratch File (스크래치 파일) 만들기
이제는 코틀린에 익숙해지기 위해서 간단한 코틀린 기본문법을 돌려볼 것이다. 이전에 한 기본문법 심화버전으로!
2022.01.29 - [Kotiln] 코틀린 기본문법1 (변수선언/함수선언/자료형/반복문/조건문)
NULL 처리
기본적으로 코틀린은 널값을 가질수 없도록 설정되어 있다. 그래서 널값을 이용하려면 추가적인 작업이 필요하다.
? 키워드를 사용해서 이 변수는 널이 가능한 변수라고 선언해줘야한다.
var x: Int = 10
x = null //널 불가 변수에 널 넣어서 오류
var y: Int? = 10
x = null //널 가능 변수에 널 넣어서 정상
?. 키워드를 사용해서 널이 아닐때만 함수가 실행되고, 널이 되면 널을 반환하도록 한다.
즉 자바에서 if(str != null) return str.toUpperCase() else return null 을 한줄로 표현할 수 있는 것이다.
val str = "abc"
println(str?.toUpperCase()) //str이 null이 아니면 str.toUpperCase(), null이면 null반환
!! 키워드를 사용해서 강제로 null 값이 들어가지 않을 것이라고 null이 아님을 보증한다.
항상 이렇게 선언된 변수는 not null로 인식되는데, 이때 Null이 되면 널포인트 에러가 발생한다.
val s: String? = null
val x: String = s!!
lateinit 키워드를 사용해서 var 변수를 선언만 해두고 나중에 초기화 값을 지정할 수 있다. (늦은 초기화)
첫 상태를 정의하기 어려울때 null로 선언하지 않고, 이렇게 선언하면 나중에 초기화 이후에도 계속해서 값이 바뀔수 있다.
lateinit var text: String
// 대충 중간에 뭔가 했음
val result1 = 30
text = "Result : $result1"
println(text)
// 대충 뭔가 또 했음
val result2 = 50
text = "Result : ${result1 + result2}"
println(text)
lazy 키워드를 사용해서 val 변수를 선언만 해두고 나중에 초기화 값을 지정할 수 있다. (늦은 초기화)
첫 상태를 정의하기 어려울때 null로 선언하지 않고, 호출할때 어떻게 초기화해줄지 정의할 수 있다.
하지만 val변수로 선언했기 때문에 한번의 늦은 초기화 이후에는 값이 바뀔수 없다.
lateinit var text: String //var변수 늦은초기화
val result: Int by lazy { //val변수 늦은초기화
text.length
}
text = "123"
println(result) //앞에서 초기화 정의내용 따라서 text.length결과(text길이:3) 출력
참고
'🍃 Language > Kotiln' 카테고리의 다른 글
[Kotlin] 코틀린 심화문법2 (확장함수/고차함수/표준라이브러리) (0) | 2022.01.31 |
---|---|
[Kotlin] 코틀린 심화문법1 (람다식:lambda expression) (0) | 2022.01.31 |
[Kotlin] 코틀린 기본문법3 (클래스와 컬렉션: List/Map/Set) (0) | 2022.01.30 |
[Kotlin] 코틀린 실행하기 - Scratch File (스크래치 파일) 만들기 (0) | 2022.01.30 |
[Kotlin]🐘빌드도구(Build Tool), Gradle과 Maven 차이점 (0) | 2022.01.30 |
[Kotlin] Intellij에서 코틀린 코딩컨벤션 Kotlin Style Guide 적용하기 (0) | 2022.01.29 |