1. 변수 선언 키워드(var & val), nullable
var string1 = "일"
val string2 = "이"
string3 = "삼" // 컴파일 에러
var string: String = "일"
val number: Int = 1
- var는 variable의 약자이고, val은 value의 약자이다.
- 변수 선언 시, 반드시 var, val 중 하나를 명시해주어야 한다.
- 또한 타입을 명시해주지 않았지만, 대입된 값이 있다면 타입 추론이 된다.
- 물론 타입을 직접 명시적으로 작성해줄 수도 있다.
var string1 // This variable must either have a type annotation or be initialized 에러
var string2: String
println(string2) // Variable 'string2' must be initialized 에러
- 초기화도 반드시 진행해주어야 한다.
- 타입 명시 및 초기화 중에 하나라도 누락이 되면 컴파일 에러가 발생한다.
var string1 = "일"
val string2 = "이"
string1 = "바"
string2 = "밸" // Val cannot be reassigned 에러
- var는 가변(mutable), val은 불변(immutable) 이라는 특징을 지닌다.
- 즉, var는 초기화 이후 재할당이 가능하지만, val은 한번 초기화면 다시 값을 할당할 수 없다.
- 단, val로 선언되었다 하더라도 컬렉션의 경우 참조 위치의 값을 바꿀 수 있으므로 element 변경이 가능하다.
- 가변 키워드는 side effect의 원인이 될 수 있기 때문에, 되도록 변수는 val로 만들고 어쩔 수 없을 때만 var를 활용하는 것이 좋다.
var number: Long? = 10L
number = null
- 코틀린에서는 nullable 변수를 선언하려면 타입 뒤에 “?” 를 붙여줘야 한다.