Develop/Kotlin

[kotlin] 코틀린 변수와 타입

JunJangE 2020. 8. 25. 16:12

코틀린에서 변수를 선언하는 방법과 타입에 대해서 알아보도록 하겠습니다.

코틀린에서 변수를 선언할 때에는 2가지 키워드를 사용하면 됩니다.

* val - 특정한 값을 의미하는 'Value'를 의미하며 val 로 선언하면 초기화 이후 '변수의 재 대입'이 불가능합니다. (불변)

* var -변경 가능하다는 의미의 'Variable'을 의미하면 var 로 선언하면 변수를 변경 가능합니다.(가변)

두 키워드의 차이를 예제 코드를 보면서 알아보도록 하겠습니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // val 변수를 사용한 경우
        val name: String = "감자"
        
        // var 변수를 사용한 경우
        var age: Int = 0

        name = "고구마" // 에러 발생!
        age = 22
        

    }
}

위 예제 코드를 작성하게 되면 name ="고구마" 부분에서 에러가 나오는 것을 알 수 있습니다.

이유로는 name에 '변수의 재 대입'이 불가능한 val 키워드를 사용했기 때문입니다.

반대로 var 키워드를 사용한 age를 출력했을 때는 23이라는 값을 받을 수 있습니다.

다음 예제 코드를 보도록 하겠습니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 변수 타입을 명시한 경우
        val name: String = "홍길동"
        var age: Int = 22
        var tall: Double = 201.5

        
        // 변수 타입을 명시하지 않은 경우(타입 추론)
        val name = "홍길동"
        var age = 0
        var tall = 201.5



    }
}

 

변수를 선언할 때는 위 키워드 중 하나를 맨 앞에 명시하고 타입을 뒤에 명시하거나 생략할 수 있습니다.

타입을 생략이 가능한 이유는 코틀린의 장점인 타입 추론이 가능하기 때문입니다.

예를 들어, 변수 name에 "홍길동"이라는 초기값을 받게 되면 그 초기 값을 String 으로 추론해내어 변수 name의 값을 "홍길동"이라고 출력하게 됩니다. 

단, 변수 선언과 동시에 초기화를 하지 않는 경우에는 반드시 타입을 명시해야 합니다. 

다음은 타입을 변환하는 방법에 대해 알아보도록 하겠습니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 변수 age의 타입은 실수(Double)
        var age : Double = 22.9
        
        // 22는 정수(Int) 값이기 때문에 .toDouble()을 사용하여 정수 타입을 Double 타입으로 변환
        age = 22.toDouble()
        

    }
}

위 코드를 보게 되면 실수(Double) 타입인 변수 age에 22라는 정수(Int)를 넣으려고 합니다.

그냥 age = 22를 하게 되면 타입이 맞지 않아 오류가 생기게 됩니다.

오류를 없애기 위해서는 22라는 정수 타입을 변환시켜야 합니다.

타입을 변환시키기 위해서는 .to<변환하고 싶은 타입>을 해줘야 합니다. 

위에 코드에서는 실수(Double) 타입으로 변환시켜야 되므로  22.toDoble() 이라고 코드를 짜야합니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 변수 age의 타입은 String
        var age = "22살"

        // 22는 정수(Int) 값이기 때문에 .toString()을 사용하여 정수 타입을 String 타입으로 변환
        age = 22.toString()


    }
}

위 코드와 같이 .toString 을 사용하여 정수를 문자열로 변환시킬 수 도 있습니다.