목표

  • 변수에 대해 알아보자.

기본 타입

  • 자바에서 숫자를 다루기 위한 타입들은 두 가지로 분류
    • 원시타입 (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

+ Recent posts