변수 선언 형식
val 변수명 : 타입 = 값
var 변수명 : 타입 = 값
- val : value의 줄임말로 초깃값이 할당되면 바꿀 수 없는 변수를 선언할 때 사용
- var : variable의 줄임말로 초깃값이 할당된 후에도 값을 바꿀 수 있는 변수를 선언할 때 사용
val data1 =10
var data2 =10
fun main(){
data1 =20 //오류
data2 =20 //성공
}
val 키워드로 선언된 data1은 추후에 변경을 시도할 때 오류가 발생하지만, var 키워드로 선언된 data2는 변경 가능하다.
타입 지정과 타입 추론
val 변수명: 타입= 10
val 변수명= 10
val data1 : Int =10
val data2 =10
변수명 뒤에 콜론(:)을 추가해 타입을 명시 할 수 있으며, 대입하는 값에 따라 타입을 유추(타입 추론)할 수 있을 때 생략할 수 있다.
초깃값 할당
최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초깃값을 할당해야 한다.
val data1 : Int //오류
val data2 = 10 //성공
class User{
val data3 : Int //오류
val data4 : Int = 10 //성공
}
함수 내부에 선언한 변수는 선언과 동시에 초깃값을 할당하지 않아도 된다.
fun Fun(){
val data1: Int
println("data1 : $data1") //오류
data1 = 10
println("data1 : $data1") //성공
}
물론 변수를 이용하려면 값을 할당하고 이용해야 한다.
초기화 미루기
변수 선언시 초깃값을 할당 할 수 없는 경우가 있다. 이런 경우 값을 이후에 할당 할 것이라고 컴파일러에게 알려 주어야 한다. 이때 사용하는 것이 lateinit키워드와 lazy키워드이다.
lateinit 키워드 사용 규칙
- var 키워드로 선언한 변수에만 사용할 수 있다.
- int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용할 수 없다.
lateinit var data1: Int //오류, Int 불가
lateinit val data2: String //오류, var로 선언해야 함
lateinit var data3: String //성공
lazy키워드
: 변수 선언문 뒤에 by lazy{ }형식으로 선언하며, 소스에서 변수가 최초로 이용되는 순간 중괄호로 묶인 부분이 자동으로 실행되어 그 결과값이 변수의 초깃값으로 할당된다.
val data1: Int by lazy{
println("여기는 느림보!")
10
}
fun main() {
println("여기는 메인!")
println(data1 + 10)
}
실행화면

'대학 > 안드로이드(코틀린) 정리' 카테고리의 다른 글
안드로이드 함수 선언 ( 코틀린 ) (0) | 2022.10.21 |
---|---|
안드로이드 데이터 타입( 코틀린 ) (0) | 2022.10.21 |
코틀린의 등장 배경/ 자바보다 좋은 점 (0) | 2022.10.21 |
안드로이드 앱 개발의 특징 (0) | 2022.10.21 |
안드로이드 실행 구조 (0) | 2022.10.21 |