본문 바로가기
Programming

Kotlin 변수 상수 타입 지정하는 방법 코틀린에서 변수 내장타입은?

by 하하호호 2022. 3. 7.
반응형

 

 

Kotlin 변수와 상수

코틀린은 정적 타입 시스템(Static type System)을 사용한다. 즉 소스 코드에 정의된 타입을 컴파일 시점에 알 수 있다는 뜻이다. 

 

코틀린에서 변수를 새로 만들어보자.

fun main(args: Array<String>){
    var experiencePoints: Int = 5
    experiencePoints+=5
    println(experiencePoints)
}

 

변수의 구조를 보면 JAVA와는 조금 다르다.

var : 변수 정의 키워드

experiencePoints : 변수 이름

Int : 변수 타입 정의

= : 대입 연산자

5 : 대입값

 

만약 변수타입정의를 Int형으로 만드러 놓고 String 값을 입력하면 에러가 발생한다.

 

코틀린의 변수 내장 타입은 크게 8가지가 있다.

String 문자열 데이터
Char 단일 문자
Boolean true 혹은 false
Int 정수
Double 부동소수점 실수
List 값을 요소로 가지는 컬렉션
Set 고유한 값의 요소를 저장하는 컬렉션
Map 키와 값이 쌍으로 요소를 저장하는 컬렉션

 

코틀린에서는 읽기 전용 변수를 선언하는 키워드를 제공한다. 읽기 전용값은 한번 값이 할당되면 변경이 불가능하다.  값이 변경될 수 있는 변수는 var 키워드를 사용한다. 값이 변경불가능한 변수는 val 키워드를 사용한다.

 

val 키워드와 var 키워드 두개를 사용해서 변수를 선언한다. 이후 playName에 할당된 손흥민 값을 사디오 마네로 변경하면 Error가 발생한다.

 

fun main(args: Array<String>){
    val playerName : String = "손흥민"
    var experiencePoints: Int = 5
    
    println(experiencePoints)
    println(playerName)
}

 

 

 

 

Kotlin 타입추론 기능

 

코틀린에서는 타입추론(type inference) 기능을 제공한다. 즉 개발자가 직접 변수의 타입을 정의해주지 않아도 코틀린 컴파일러가 할당된 값을 기반으로 변수의 타입을 추론하기 때문이다. 명시적으로 타입을 지정할 필요가 없다. 편리하다. 아래 예시에서도 타입을 지정해주지 않았음에도 불구하고 컴파일 에러가 발생하지 않고 정상적으로 프로그램 실행이 된다.

 

인텔리제이에서는 커서를 변수에 두고 Ctrl+Shift+P 단축키를 입력하면 해당 변수가 어떤 타입으로 추론되는지를 표시해준다. 편리하다.

fun main(args: Array<String>){
    val playerName = "손흥민"
    var experiencePoints= 5

    println(experiencePoints)
    println(playerName)
}
5
손흥민

 

 

Kotlin 컴파일 시점 상수

사실 Kotlin의 val 키워드는 진정한 상수 값이 아니다. val 변수도 값을 변경하는 경우가 있다. 진정한 상수라고 하면 프로그램이 실행되는 런타임 (runtime) 시점 전에 상수로 만들어져 있어야 한다. 즉 컴파일 시점에 상수로 지정되야 하는데, 이걸 컴파일 시점 상수라고 한다. 컴파일 시점 상수는 val 키워드 앞에 const 상수를 붙여서 사용한다.

 

컴파일 시점 상수는 main함수 외부에 정의되어야 한다. 컴파일 시점에서 값이 이미 정해져 있어야 하기 때문이다. 변수의 이름은 대문자를 사용하는게 일반적이다.

 

const val MAX_EXPERIENCE = 5000

fun main(args: Array<String>){
    val playerName = "손흥민"
    var experiencePoints= 5

    println(experiencePoints)
    println(playerName)
    println(MAX_EXPERIENCE)
}

 

5
손흥민
5000

 

 

Kotlin 변수 타입

JAVA에서는 참조타입(Referenc)과 기본타입(Primitive)가 있다. 참조타입은 별개 소스 코드 파일로 정의되는 변수타입이며, 기본타입은 자바 언어에 내장되어 있는 소스 코드 파일로 구성된다. 일반적으로 기본타입이 참조타입보다 성능이 뛰어나다. 하지만 jdk1.5부터 적용된 제네릭 문법에서는 참조타입만 사용이 가능하다.

 

참조타입 : Integer 등

기본타입 : int

 

Kotlin에서는 기본타입보다는 참조타입으로 변수를 정의하게 되어있다. 성능은 기본타입이 뛰어나기 때문에 bytecode를 살펴보면 Int로 정의된 변수가 int 로 대체되어있는 것을 확인할 수 있다. 즉 개발자가 참조타입을 사용할지 기본타입을 사용할지 고민할 필요가 없다는 것이다. 심지어 생략해도 된다. 

 

 

더 읽을거리

 

 

Kotlin은 JAVA를 삼킬 수 있을까? Kotlin을 사용하는 이유

What is Kotlin? JAVA는 오랜 시간 Enterprise 시장을 지배한 언어다. 안드로이드, 정부 표준 웹 프레임워크 등 굵직한 프로젝트에 사용되기 시작하면서 JAVA의 위상을 건드릴 언어는 없다. Python은 다목적

incomeplus.tistory.com

 

2022.03.07 - [Programming] - Kotlin Hello World 출력하기

반응형

댓글