본문 바로가기
언어/코틀린

[Kotlin] 변수 선언

by 코딩히어로 2022. 6. 10.
728x90

제목


코틀린에서 변수는 val, var 키워드로 선언됩니다

val은 value의 줄임말로 초기값이 할당되면 바꿀 수 없는 상수의 개념입니다

어떠한 값을 지정해서 사용할 때에는 val로 선언하면 되고

var는 variable의 줄임말로 초기값을 할당한 뒤에도 값을 변경할 수 있는 변수입니다

 

코틀린에서는 변수를 선언하는 형식이 자바와는 많이 다른 형태를 가지고 있습니다

val 변수명: 타입 = 값

맨 처음 부분에 val or var을 명시하고 다음으로 변수명을 적어줍니다

타입은 명시하지 않아도 상관이 없고 대입되는 값에 따라서 할당됩니다

 

 

val과 var 키워드의 차이점


val test1 = 10
var test2 = 10

fun main(){
	test1 = 20		// 에러!!
	test2 = 20		// 성공
}

위에서 보는것과 같이 val로 선언된 경우 위에서 설명한 것과 같이 상수의 개념이기 때문에

값을 변경하려고 한다면 에러를 출력하게 됩니다

반대로 var의 경우 변수이기 때문에 값이 변경되는 것이 가능합니다

 

 

 

타입 추론


val test1: Int = 10
val test2 = 10

위 코드에서 test 1은 명시적으로 Int형임을 선언한 것으로 Int형 상수입니다

test2의 경우에 타입 지정을 하지 않았으나 대입되는 값이 정수형 10으로 Int 타입이 됩니다

즉 val test2: Int = 10이라고 선언한 것과 같다고 볼 수 있습니다

 

 

 

초기값 할당


val test1: Int		// 에러!!!
val test2 = 10		// 성공

fun Fun(){
	val test3: Int
	println("test3: $test3")		// 에러!!!
	test3 = 10
	println("test33 : $test3")		// 성공
}

class user{
	val test4: Int			// 에러!!!
	val test5: Int = 10		// 성공
}

최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초기값을 할당해야 하지만

함수 내부에 선언한 변수는 선언과 동시에 초기값을 할당하지 않아도 됩니다

Fun 함수 내부에 test 3 출력이 에러가 나는 이유는 Int 타입으로 지정되어 있지만 값이 할당되지 않았기 때문입니다

 

 

초기값 할당 미루기


lateinit var test1: Int			// 에러!!!
lateinit val test2: String		// 에러!!!
lateinit var test3: String		// 성공

lateinit이나 lazy키워드를 사용하면 초기값을 할당하지 않아도 됩니다

lateinit 키워드는 컴파일러에게 이후에 초기값을 할당할 것임을 명시적으로 선언하는 키워드입니다

 

lateinit로 선언한 변수는 모든 유형의 변수에는 사용할 수 없으면 다음 2가지 규칙을 가집니다

1. lateinit은 var 키워드로 선언한 변수에만 사용이 가능
2. Int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용할 수 없음
728x90
반응형

'언어 > 코틀린' 카테고리의 다른 글

[Kotlin] 클래스와 생성자  (6) 2022.06.14
[Kotlin] 조건문 When  (2) 2022.06.13
[Kotlin] 함수 선언  (2) 2022.06.13
[Kotlin] 데이터 타입  (2) 2022.06.10
[Kotlin] 코틀린이란?  (0) 2021.10.26

댓글