# 변수 - 변수는 `var`를 사용해서 선언합니다. - 상수는 `val`을 사용해서 선언합니다. > 자바와 달리, 변수를 최상위 수준에 선언할 수도 있습니다. ## var ```kotlin var a: Int = 1 // 선언과 동시에 값을 할당 var b = 2 // 자료형이 추론 가능한 경우 생략 가능 var c: Int // 값이 나중에 할당되는 경우에는 자료형을 지정해 줘야 합니다. c = 3 ``` ## val ```kotlin val a: Int = 1 val b = 2 val c: Int c = 3 ``` ## 자료형 - Byte - Short - Int - Long - Float - Double - Boolean - Char - String ```kotlin var price = 1200 var rate = 1.1 var product = "Candy" ``` ```kotlin var price: Int = 1200 var rate: Double = 1.1 var product:String = "Candy" ``` ## Null 안정성 변수 또는 상수가 null 값을 가질 수 있게 하려면 자료형 뒤에 `?`를 붙입니다. ```kotlin var a: String = "abc" a = null // BAD: can not be a null var b: String? = "abc" b = null // OK. nullable ``` ## Null 체크 ```kotlin val v = if (b != null) b.length else -1 ``` ## Nullable 값의 안전한 사용 ```kotlin println(b?.length) // b가 null인 경우에는 null을 반환하고, 아니면 b의 length를 반환 ``` ## 엘비스 연산자 ```kotlin val v: Int = if (b != null) b.length else -1 val v = b?length ?: -1 ``` ## Not-Null 단언 ```kotlin val l = b!!.length // b가 널이 아님이 확실할 때 사용합니다. b가 null이면 예외가 발생합니다. ```