Kotlin

[Kotlin] Type, String, Array 새로 배운 학습 정리

 

(1) Type

 

- 원시 타입(Primitive Type) : 변수에 할당 될 때 메모리 상에서 고정된 크기로 할당되며, 원시 데이터의 값을 보관. 값이 저장된 메모리 영역에 직접적으로 접근. [Access By Value]

- 참조 타입(Reference Type) : 크기가 정해져 있지 않고 값이 직접 변수에 할당되지 않고 값이 저장되어 있는 Heap Memory의 주소값을 가짐. [Access By Reference]

 

- Stack (정적 메모리 영역) : 변수의 실제 값을 저장하는 영역. 객체 내 메소드 작업 종료 시 메모리 공간은 비워진다.

- Heap (동적 메모리 영역) : 런타임 시 메모리에 동적으로 할당되는 영역. 참조 변수가 없으면 가비지 컬렉터에 의해 메모리가 정리될 수 있다. 가비지 컬렉터에 의해 메모리 관리가 이루어진다.

 

- Boxing : 원시타입을 참조타입으로 변환

- Unboxing : 참조타입을 원시타입으로 변환

 

- 코틀린에서의 타입은 모두 객체이다. 코틀린에서 원시타입/참조타입 구분하지 않는다.

- Number Type은 런타임 시 JVM에 의해 원시타입으로 변환된다.

- 예외적으로 Nullable Type은 참조타입으로 변환된다.

 

 

(2) String

- 기본적으로 String Type은 변경 불가능한 타입으로, 값을 변경하는 것이 아닌 새롭게 할당하는 것이다.

 

 

(3) Array

- 코틀린에서 배열은 Array Class를 통해 표현된다. arrayOf() 함수를 통해 배열을 선언 할 수 있다.

- 그러나 아래와 같이 arrayOf()를 통하면 Boxing 현상으로 인해 추가적인 오버헤드가 발생할 수 있다.

val array: Array<Int> = arrayOf(1,2,3,4,5)

- 위 오버헤드를 방지하기 위해 코틀린에서는 IntArray, ByteArray 형태의 원시타입 배열이 존재한다. 

val intArray = IntArray(5) // [0, 0, 0, 0, 0]

 

 

 

참고 : https://sabarada.tistory.com/165

 

[kotlin] 코틀린 차곡차곡- 1. 코틀린의 변수와 타입

안녕하세요. 오늘은 여러분들과 함께 코틀린(kotlin)에서 변수를 선언하고 사용하는 방법에 대해서 알아보는 시간을 가져보고자 합니다. 코틀린의 필드와 변수 코틀린에서 기본적으로 필드와 변

sabarada.tistory.com

 

https://velog.io/@gillog/%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-%EC%B0%B8%EC%A1%B0%ED%83%80%EC%9E%85Primitive-Type-Reference-Type

 

원시타입, 참조타입(Primitive Type, Reference Type)

boolean저장 가능한 범위 true/ falseJava가 데이터를 다루는 최소 범위가 1 Byte 이기 때문에 낭비적이지만 1 Byte를 사용한다.charJava의 경우 Unicode를 사용, 동양의 글자의 경우 2 Byte 필요하기때문에 char

velog.io