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 로 대체되어있는 것을 확인할 수 있다. 즉 개발자가 참조타입을 사용할지 기본타입을 사용할지 고민할 필요가 없다는 것이다. 심지어 생략해도 된다.
더 읽을거리
'Programming' 카테고리의 다른 글
Ubuntu NPM node.js install 설치하기 (0) | 2022.03.08 |
---|---|
Kotlin null 처리하는 방법 (0) | 2022.03.07 |
Kotlin when 문법 사용하는 방법 (0) | 2022.03.07 |
Kotlin Hello World 출력하기 (0) | 2022.03.07 |
Spring Boot 어노테이션 모음집 (0) | 2022.03.01 |
JAVA 오버로딩 오버라이딩이란 추상클래스 구현이란 인터페이스란 객체지향 기술 종류 (0) | 2022.02.25 |
댓글