변수 사용 시 유의사항

sanghoon·2020년 12월 9일
0
post-thumbnail

코틀린에서 변수를 사용할 때의 유의사항을 알아봅시다.


변수의 정의와 사용법

변수

변수란 어떤 값을 담을 수 있도록 선언해 놓은 것이라고 생각하면 됩니다. 코틀린에서는 var과 val 두 가지의 키워드를 통해 변수를 선언할 수 있습니다.

var 변수

var로 선언된 변수는 초기화된 후에도 해당 변수에 다른 값을 넣을 수 있는 가변형 변수입니다. 코드를 통해 선언 방법과 특징을 살펴봅시다.

// kotlin
fun main() {
    var number: Int = 5
    number = 6
    println(number)
}

위 코드를 실행시켜보면 6이 출력되는 것을 확인할 수 있습니다.

val 변수

값이 바뀔 필요가 없는 변수(불변 변수, immutable variable)에 대해서는 val로 선언할 수 있습니다. 이는 값이 변해서는 안 되는 변수에 대해 코드상의 안정성을 부여하기 위한 것으로 보입니다. val 변수의 선언 방법과 특징을 살펴봅시다.

// kotlin
fun main() {
    val number: Int = 5
    // number = 6 에러 발생
    println(number)
}

위 코드에서 number 변수가 val로 선언되었기 때문에 5로 초기화된 이후 6을 number의 값으로 넣으려고 하면 에러가 발생합니다.

자료형의 추론

변수를 선언할 때 자료형을 지정하지 않고도 코틀린은 해당 변수에 어떤 값이 들어가느냐에 따라 자료형을 추론해냅니다.

fun main() {
    var number = 5 // number는 Int형
    val str = "안녕하세요" // str은 String형
    // number = str      !! type missmatch 오류
}

변수 사용 시 주의사항

1. 정수로 구성된 표현식은 Int로 추론된다

fun main() {
    var number = 5 / 2
    println(number is Int) // true
}

따라서 한정적인 값만 갖는 변수라거나, Int형 변수가 담을 수 있는 범위를 넘어가는 값을 가질 수 있는 변수들은 Byte, Short, Long형으로 명시적으로 지정해야 합니다.

2. Double로 지정된 변수에 Int를 넣을 수 없다

fun main() {
    var number: Double = 5
// integer literal does not conform to the expected type Double 
}

같은 이유에서 파생된 예시코드입니다. 리터럴 연산 간 좌우에 Int형 리터럴이 있으면 Int로 추론되기 때문입니다.

fun main() {
    var number2: Double = 5 / 2 
    // type missmatch
}

따라서 다음과 같은 상황도 주의해야되겠습니다.

fun main() {
    var number: Double = 5 / 2 + 0.7
    println(number) // 2.7
}

5 / 2 는 Int로 추론되어 소수점을 제외한 2가 남기 때문입니다.


공부하면서 추가해야될 부분이 생기면 계속 추가됩니다.

0개의 댓글