본문 바로가기
Kotlin

Kotlin 기본 - 변수와 자료형

by EricJeong 2020. 7. 26.

Program entry point 만들기

코틀린에서 프로그램의 시작점인 main 함수를 만들기 위해서는 아래와 같이 선언할 수 있습니다. Java에서는 class를 만들고 클래스 내부에 public static void... 와 같은 형태로 선언해야 했지만 코틀린에서는 클래스를 만들 필요 없이 아래와 같이 선언하는 것만으로도 entry point를 만들 수 있습니다.

fun main() {
  println("Hello Eric!")
}

 

변수 선언

변수를 선언할 때 var, val 두가지 선언 방법을 선택해서 사용할 수 있습니다. 기본적으로 모든 변수는 선언과 동시에 초기화를 해주어야 합니다. 초기화를 하지 않고 변수를 사용하려고 할 시에는 컴파일 에러가 발생하며, 이로 인해 의도하지 않은 NullPointerException을 방지할 수 있습니다.

 

    fun main() {
        var name: String
        println(name)	// Compile ERROR!
    }

 

var

변수를 선언한 수, 해당 변수의 값을 변경할 수 있습니다.

fun main() {
        var variable = "aaa"
        val value = "bbb"

        variable = "ccc"
        value = "ddd"	// Compile ERROR!
}

val

변수를 선언한 후, 해당 변수를 read-only 상태로 만듭니다. 선언 시 할당한 값은 다른 값으로 치환할 수 없습니다.

 Java의 final 키워드를 붙인 변수와 동일하게 작동합니다.

 

자료형

kotlin에도 기본형, 참조형 자료형이 존재합니다. 다만, 프로그래머가 직접 기본형으로 자료형을 지정해주는 것이 아니라 컴파일러가 성능 최적화를 위하여 변경시켜줄 때 기본형 자료형이 사용됩니다. 프로그래머가 명시적으로 선언할 수 있는 자료형은 모두 참조형 자료형입니다.

 

자료형 크기 타입
Byte 1 byte 정수
Short 2 byte 정수
Int 4 byte 정수
Long 8 byte 정수
Float 4 byte 실수
Double 8 byte 실수
Char 2 byte 문자 (숫자가 아님!)
String auto 문자열

java에서는 char 기본형 자료형이 숫자로 인식되지만, kotlin에서 Char은 문자로 인식된다는 차이점이 있습니다. 

 

 

 

변수 선언시 자료형을 명시적으로 선언할 수 있습니다. 자료형은 `변수명 :자료형`으로 선언해 줄 수 있습니다.  

fun main() {
    var name: String = "Eric"
    var age: Int = 26
}

 

변수의 자료형을 명시적으로 선언하지 않아도 코틀린에서는 대입하는 값의 타입을 계산하여 자동으로 변수의 타입을 할당하여줍니다. 아래 예제는 위 코드와 동일하게 변수의 타입을 할당하여줍니다.

fun main() {
    var name = "Eric"   // String
    var age = 26        // Int
}

 

만약 변수에 Null을 허용하도록 만들고 싶다면, 자료형을 명시적으로 선언해준 후 `?` 키워드를 사용하여 Null을 허용하도록 만들 수 있습니다. 이때 해당 변수는 NullPointerException이 발생할 수 있는 상태가 되니 `?` 키워드는 꼭 필요한 경우에 엄격하게 사용하는 것이 좋습니다.

fun main() {
    var name: String? =  null
}

 

typealias

생성하는 자료형의 별칭을 선언할 수 있습니다. 복잡한 클래스명과 같이 길어서 매번 써주기 번거롭고 코드의 가독성을 떨어뜨릴 수 있는 경우 이 typealias가 유용합니다. `typealias [별칭] = [타입]` 의 형태로 선언할 수 있습니다.

typealias CustomType = String

fun main() {
    var name: CustomType = "Eric"
}

 

'Kotlin' 카테고리의 다른 글

[Kotlin] 프로그래머스 크레인 인형뽑기 게임  (0) 2020.12.18

댓글