POST

Kotlin 코틀린 자료형의 종류

코틀린의 자료형은 참조형 자료형을 사용합니다.

프로그래밍 언어의 자료형은 기본형 자료형과 참조형 자료형으로 구별하여 사용합니다.

기본형은 가공되지 않은 순수한 자료형을 말하며 프로그래밍 언어에 내장되어 있습니다.

참조형은 객체를 생성하고 동적 메모리 영역에 데이터를 둔 다음 이것을 참조합니다.

 

자바에서는 int, long, float, double등 기본형과 String, Data와 같은 참조형을 함께 사용하지만

코틀린에서는 모두 참조형 자료형을 사용합니다. 

여기서는 정수, 실수, 논리, 문자, 문자열 자료형에 대하여 포스팅 합니다.

 

정수 자료형


코틀린에서는 부호가 있는 정수 자료형과 음의 부호를 사용하지 않는 정수 자료형이 있습니다.

부호가 없는 자료형은 부호가 있는 것보다 2배 더 많은 양수를 나타 낼 수 있습니다. 다만 아직 까진 실험적인 기능이라 개발에 주의가 필요합니다.

아래의 표를 참고하시기 바랍니다.

형식 자료형 크기 값의 범위
정수 자료형 Byte 1바이트(8비트) -2^7~2^7 -1 (-128~127)
Short 2바이트(16비트) -2^15~2^15-1 (-32768~32767)
Int 4바이트(32비트) -2^31~2^31 -1
Long 8바이트(64비트) -2∧63~22^63 -1
부호 없는 정수 자료형 UByte 1바이트(8비트) 0~2^8 -1 (0~255)
Ushort 2바이트(16비트) 0~2^16 -1 (0~65,535)
UInt 4바이트(32비트) 0~2^32 -1
ULong 8바이트(64비트) 0~2^64 -1

코틀린의 자료형 추론

또한 코틀린에서는 자료형 추론을 통해 자료형을 지정하지 않고 변수를 선언해도 알아서 변수의 자료형을 추론하여 나타냅니다. 보통 정수의 경우 Int형으로 추론되기 때문에 작은 범위를 사용할 때는 자료형을 지정해주어야 합니다.

아래의 예제를 따라 하여 봅시다.

 

val num0: Byte = 123 // Byte형을 지정하여 선언
val num1 = 123 // Int형으로 추론
val num2 = 123L // 접미사 L을 이용하여 Long형으로 추론
val num3 = 0X0F // 접두사 0x를 사용해 16진 표기가 사용된 Int형으로 추론
val num4 = 0b00010110 // 접두사 0b를 사용해 2진 표기가 사용된 Int 형으로 추론

 

부호가 없는 자료형은 값에 식별자를 사용하여 구분합니다.

val uNum0: Byte = 200u
val uNum1: UShort = 40000u 
val uNum2 = 463752u // UInt 형으로 추론
val uNum3: ULong = 324567uL

 

길이가 긴 숫자의 가독성 높이는 방법

코틀린에서는 언더스코어(_)를 사용하여 자릿값을 구분해 줄 수 있습니다. 언더스코어는 값에 영향을 주지 않고 단순히 코드의 가독성을 위해 사용되기 때문에 아무 위치든 상관없이 추가할 수 있습니다.

val num1 = 1_234_567 // 1,234,567
val num2 = 1_2345_6789L
val hexNum = 0xAB_CD_EF_12
val binNum = 0b0001_0110

 

실수 자료형


실수 자료형은 2가지가 있습니다. 아래의 표를 참고해 주세요.

형식 자료형 크기
실수 자료형 Float 4바이트(32비트)
Double 8바이트(64비트)

소수점의 이동

프로그램에서 실수를 표현할 때는 부동 소수점 방식을 이용합니다. 말그대로 점만 둥둥 떠서 움직이는 방식입니다.

ex) 3.14 * 10^-2 = 0.0314, 3.14*10^2 = 314

ex) 가수 * 밑수^지수

 

코틀린에서는 소수점의 이동은 숫자 오른쪽에 e나 E와 함께 가수를 제외한 지수를 입력하면 됩니다.

val eNum = 3.14e-2 // 0.0314
val enum2 = 3.14E2 // 314 (+기호는 생략해도 됩니다.)

 

논리 자료형


참, 거짓을 표현하는 논리 자료형(Boolean)입니다. 조건을 검사할 때 사용됩니다.

자료형은 Boolean 한 가지이며, 값은 true, false 2개입니다.

val isReal = true // 이즈리얼은 Boolean형으로 추론됩니다
val isReal: Boolean // 변수를 선언만 하게 될 경우 반드시 자료형을 지정해주어야 합니다.

 

문자 자료형


문자를 표현하기 위한 자료형입니다. 작은따옴표(')로 값을 감싸 표현합니다.

val char1 = 'A' // 문자 하나만 지정 가능 크기가 2바이트로 한글도 지정 가능합니다.
val cah2: Char // 변수를 선언만 하게 될 경우 반드시 자료형을 지정해주어야 합니다.

 

 

문자열 자료형


문자열은 여러 문자를 배열하여 저장할 수 있는 자료형입니다. 큰 따옴표(")로 값을 감싸 표현합니다.

선언 방법은 다른 언어들과 동일 하지만 저장의 방식은 조금 특별합니다.

val str1: String = "Hello" // 일반적인 선언 방식
val str2 = "World" // 문자열 자료형으로 추론

 

문자열 저장 방식을 확인을 위해 아래 코드를 작성합니다.

fun main() {
val str1 = "Hello"
val str2 = "World"
val str3 = "Hello"

// (===)는 참조 주소가 같은지 비교하는 연산자입니다.
println("str1 === str2: ${str1 === str2}") // false

println("str1 === str3: ${str1 === ste3}") // true
// 힙이라는 영역의 String Pool이라는 공간에 문자열인 "Hello"를 저장해 참조하도록 되어 참조 주소가 동일합니다.
}