변수 선언
val : value, 초기값이 할당되면 바꿀 수 없는 변수
var : variable, 초기값이 할당된 이후에도 값을 바꿀 수 있는 변수
val(또는 var) 변수명: 타입 = 값
명시적으로 변수 타입을 입력한 경우 해당 타입으로 변수가 선언, 그렇지 않을 경우 대입한 값에 따라 자동으로 해당하는 타입이 됨.
초기값 할당
- 최상위에 선언한 변수, 멤버 변수는 선언과 동시에 초기값을 할당해야함
- 함수 내부에 선언한 변수는 초기값을 할당하지 않아도 되나 변수 사용 시 값을 할당 후 사용해야함(클래스 내부 제외)
초기화 미루기
- 변수 선언시 초기값 할당을 나중에 할 것이라고 명시적인 키워드를 입력
lateinit : 선언과 동시에 초기값을 할당하지 않아도 되지만 var 형으로 선언한 변수에만 사용 가능하고 Int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용이 불가함
lateinit var name: String // 가능
lateinit val name: String // 불가
lateinit var name: Int // 불가
lazy : 변수 선언문 뒤에 by lazy {} 형식으로 선언, 소스에서 변수가 최초로 이용되는 순간에 중괄호로 묶인 부분이 실행되어 결과값이 변수의 초기값으로 할당됨. val 형으로 선언한 변수에만 사용 가능
val data: Int by lazy {
println("in lazy..")
10
}
fun main(){
println("in main")
println(data + 10) // 20
println(data + 20) // 30
println(data + 30) // 40
}
데이터 타입
- 코틀린의 모든 변수는 객체이므로 객체의 메서드를 이용할 수 있다
var data2: Int = 1
fun main(){
println(data2) // 1
data2 = data2.plus(4)
println(data2) // 5
}
null 허용
- 코틀린의 변수는 객체이므로 null 할당이 가능
- 변수 선언 시 null을 대입할수 있는 nullable 변수인지 아닌지 구분해서 선언해야함
var data1: Int? = 1 // nullable
var data2: Int = 1 // not null
null 값을 다루는 방법
안전한 호출 연산자(?.) : 변수의 null 여부를 검사하고 null이 아닌 경우에만 메서드나 속성에 접근
val length = data?.length // data가 null이 아니면 length를 반환하고, null이면 null을 반환
엘비스 연산자(?:) : 변수가 null인 경우 디폴트 값을 지정할 수 있음
val length = data?.length ?: 0 // data가 null이면 0을 반환하고, 아니면 length를 반환
null 가능 타입 변환 연산자(!!) : 변수가 null이 아님을 확신할 때 사용, 만약 null이면 예외가 발생
val length = data!!.length // data가 null이면 NullPointerException 발생
'Android' 카테고리의 다른 글
[Kotlin] 코틀린 - 컬렉션 타입(Array, List, Set, Map) (0) | 2024.08.01 |
---|---|
[Kotlin] 코틀린 - 함수 (0) | 2024.08.01 |
[Android] 안드로이드 앱 기본 구조 - 안드로이드 컴포넌트 (0) | 2024.07.31 |
안드로이드 디바이스에 MariaDB 설치 및 외부접속 허용까지 (0) | 2023.06.26 |
com.android.ide.common.signing.KeytoolException: Failed to read key AndroidDebugKey from store 에러 (0) | 2023.06.21 |