목표
- 변수에 대해 알아보자.
기본 타입
- 자바에서 숫자를 다루기 위한 타입들은 두 가지로 분류
- 원시타입 (primitive type) : 값 자체를 직접 저장 (short, int, long, float, double)
- 참조타입 (reference type) : 참조 값을 저장 (Short, Integer, Long, Float, Double)
- 코틀린의 어떤 값이든 멤버 함수나 프로퍼비트를 호출할 수 있기 때문에 이것은 객체이다.
타입 크기
- 타입의 크기는 Int.SIZE_BTYES 등으로 참조 가능하다
Type | Byte | 예시 |
Byte | 1 | var oneByte : Btye = 1 |
Short | 2 | var oneShort : Short = 1 |
Int | 4 | var one = 2147483647 |
Float | 4 |
var pi = 3.14f |
Double | 8 | var double = 3.14 |
Long | 8 |
var implicitLong = 2147483648 var explicitLong = 1L |
Char | 2 |
var char = '1' |
Boolean | 1 | var flag = true |
Unit | - | - |
Any | - | - |
숫자 (Numbers)
- 모든 타입 없는 값의 경우 Int의 최대 크기가 넘지 않으면 Int로 초기화 되지만, 초과한 경우 Long 타입이 된다.
- 다만 L을 사용하면 Long 타입을 명확하게 표현할 수 있다.
- 소수점 값의 경우 오직 Double로 추론한다. 명시적으로 표시하지 않은 경우 Float이나 Int로 추론하지 않는다.
- 소수점 값 뒷자리에 f 혹은 F를 사용하여 Float 타입을 표현할 수 있다.
리터럴 상수 (Literal Constants)
- 10진수 Int : 123
- 10진수 Long : 123L
- 16진수 : 0x07b (123)
- 2진수 : 0b01111011 (123)
- 8진수 : 미지원
- Double : 12.3e1, 123.0
- Float : 123f, 123F
Underscores in numeric literals (1.1부터 지원)
- var oneMillion = 1_000_000 등으로 숫자에 언더바를 넣어 구별이 가능하다.
표현 (Representation)
- Java에서 숫자는 JVM에 Primitive types(값을 직접 저장하는 타입)으로 저장된다.
- Nullable한 수나 generic은 을 포함하는 경우 boxing된다.
- boxing : 정수의 기본 타입에는 값을 직접 저장하는 int(primitive type)과 Integer(reference type)이 존재한다. 박싱(boxing)이란 기본형을 참조형으로 변환하는 것을 말한다.
- unboxing : 언박싱(unboxing)이란
Characters
- Kotlin에서 Char에 숫자를 넣을 수 없다.
Booleans
Arrays
String
변수 선언
- 코틀린에서 변수에 값을 넣을때 타입 표기를 생략해도 된다.
- 다만 초기값이 없는 경우는 타입 추론을 할 수 없음으로 반드시 타입 표기를 해야 한다.
val number = 5
val number : Int = 5
var number : Int
변경 가능한 변수와 변경 불가능한 변수
- 코틀린에서 변수 선언 시 사용하는 키워드는 val과 var가 있다.
변경 불가능한 변수 val
- val는 value에서 따온 말로, 초기에 한번만 값 할강이 가능하고, 이후 변경이 불가능한 변수이다.
변경 가능한 변수 var
- var는 variable에서 따온 말로, 변경이 가능한 참조를 저장하는 변수이다.
변수 사용 시 유의사항
-
함수형 코드에서는 기본적으로는 val로 변수를 선언하고, 꼭 필요할때만 var를 사용하는 것이 사이드 이펙트를 줄일 수 있다.
-
다만 val의 경우, 참조 자체는 불변일 지라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있음을 유의하자. final Array를 사용하는 경우라고 생각하면 된다.
-
var의 경우 언제든지 값은 변경할 수 있지만, 타입은 최초에 넣은 데이터로 고정되기 때문에 값 할당 시 유의해야 한다.
// 불변 변수의 참조는 변경 가능
val immutableArray = arrayListOf("apple")
immutableArray.add("banana")
// 변경 가능한 변수의 타입은 변경 불가능
var index = 1
index = "0" // Error : type mismatch
'프로그래밍 > Kotiln' 카테고리의 다른 글
[Kotlin] 3. 함수 (0) | 2020.01.29 |
---|---|
[Kotlin] 2. 개발환경 구축 (0) | 2020.01.29 |
[Kotlin] 1. 코틀린은 무엇인가? (0) | 2019.10.30 |