티스토리 뷰

Develop/Kotlin

[Kotlin] 변수 - val과 var

노이지 2021. 10. 13. 12:59
반응형

자바에서 int, String 등 자료형으로 변수를 선언했던 것과 달리 코틀린의 변수는 val과 var 키워드를 이용해 선언한다. val과 var의 차이와 사용법을 알아보자.

//java
int a = 1;
String str = "Hello World";
//kotlin
val a = 1
val str = "Hello World"

 

1. val과 var의 차이

  • val: read-only(읽기 전용) 변수. 자바의 final에 해당
  • var: variable(값을 바꿀 수 있는) 변수. 자바의 일반 변수에 해당

변수의 값이 변경되지 않아야 하는 경우 val을 이용하고, 값이 변경되어야 한다면 var을 이용해 변수를 선언한다. val로 변수를 선언해 놓고 변경해야 하는 경우 var로 바꾸는 방법을 사용하면 오류 발생 확률을 낮출 수 있다.

 

1) val

val 변수는 블록을 실행할 때 정확히 한 번만 초기화돼야 한다. 어떤 블록이 실행될 때 오직 하나의 초기화 문장만 실행됨을 컴파일러가 확인할 수 있다면 val 값을 다른 여러 값으로 초기화할 수 있다.

val message: String
if (canPerformOperation()) {
    message = "Success"
}
else {
    message = "Failed"
}

 

val 참조 자체는 불변이라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다.

val languages = arrayListOf("Java")
languages.add("Kotlin")

 

2) var

변수의 값을 변경할 수 있지만 변수의 타입은 고정돼 바뀌지 않는다. 컴파일러는 변수 선언 시점의 초기화 식으로부터 변수 타입을 추론하며, 변수 선언 이후 변수 재대입이 이루어질 때는 이미 추론한 변수 타입을 염두에 두고 검사한다.

 

다른 타입의 값을 저장하는 방법

  • 변환 함수를 써서 값을 변수의 타입으로 변환하기
  • 값을 변수에 대입할 수 있는 타입으로 강제 형 변환하기
var a: Long = 1
var b: Int = 2
a = b.toLong()

 

2. 변수 선언 및 할당

코틀린에서는 변수를 선언할 때 자료형을 지정하지 않아도 컴파일러가 초기화 식을 분석해 자료형을 지정한다.

초기화 식을 사용하지 않고 선언하는 경우 자료형을 반드시 명시해야 한다. 초기화 식이 없으면 변수에 대한 정보가 없기 때문에 컴파일러가 자료형을 추론할 수 없다.

val a: Int = 1  // immediate assignment
val b = 2   // `Int` type is inferred
val c: Int  // Type required when no initializer is provided
c = 3       // deferred assignment

 

참고

 

반응형

'Develop > Kotlin' 카테고리의 다른 글

[Kotlin] 출력 - 변수와 특수문자  (0) 2021.08.05
[Kotlin] 코틀린이란?  (0) 2021.06.16
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함