일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정보처리기사실기 기출문제
- Linux
- CKA
- 정보처리기사 실기 기출문제
- MySQL
- Kubernetes
- AI
- kotlin
- 코틀린 코루틴의 정석
- kotlin coroutine
- 정보처리기사 실기
- CKA 기출문제
- 오블완
- AWS EKS
- kotlin spring
- CloudWatch
- PETERICA
- 공부
- IntelliJ
- Spring
- minikube
- Pinpoint
- Elasticsearch
- Java
- APM
- mysql 튜닝
- aws
- 티스토리챌린지
- kotlin querydsl
- 기록으로 실력을 쌓자
- Today
- Total
피터의 개발이야기
[Kotlin] 기본 자료형과 참조 자료형 본문
ㅁ 들어가며
ㅇ 자바의 자료형은 기본 자료형(Primitive type)과 참조 자료형(Reference type)이 있지만, 코틀린은 언어 특성 상 null값을 가질 수 있어서 Int, Long, Boolean 등과 같이 구별이 없이 사용된다. 이 차이점이 이해하기 위해 기본 자료형과 참조 자료형에 대해서 정리해 보자.
ㅁ 자료형의 종류
ㅇ 기본자료형(Primitive type)
값을 저장하는 가장 작은 단위로, 값 자체를 변수에 저장한다. 메모리 상에 변수를 저장하기 때문에 null은 저장되지 않는다.
ㅇ 참조 자료형(Reference type)
값이 저장된 메모리 주소를 가리키는 주소값을 저장하는 변수이다. C언어의 포인터와 유사하게 값이 저장된 메모리 주소를 저장하기 때문에 null을 할당할 수 있다.
코틀린은 null을 저장할 수 있기 때문에 기본 자료형을 지원하지 않는고, Nullable 타입을 지원한다.
ㅁ Kotlin 코드
fun main() {
val n1 = 10
val n2: Int = 20
val n3: Int? = 30
println("n1=$n1, n2=$n2, n3=$n3")
}
ㅇ 3가지 변수 선언 형태이다.
- Int를 선언하지 않음
- Int를 선언하되 not null
- Int?으로 선언되어 null 허용
ㅇ 코틀린 코드가 컴파일 된 class를 디컴파일하면 다음과 같다.
ㅁ JAVA 코드
public final class DataTypePrimitiveReferenceTutorialKt {
public static final void main() {
int n1 = 10;
int n2 = 20;
Integer n3 = 30;
String var3 = "n1=" + n1 + ", n2=" + n2 + ", n3=" + n3;
boolean var4 = false;
System.out.println(var3);
}
// $FF: synthetic method
public static void main(String[] var0) {
main();
}
}
ㅁ Kotlin 자료형의 주의점
Kotlin과 Java는 모두 JVM에서 구동된다. 코틀린에서 기본 자료형과 참조 자료형의 구별은 감춰져 있다고 말할 수 있다. 코틀린의 개발의 편의성을 높이기 위해 Java를 캡슐화하여 자료형을 단순화 하였다. 그래서 일반적으로 자료형을 구별없이 사용해도 큰 무리가 없지만, 특정 라이브러리에서는 Parameter와 Argment 타입을 비교하기도 한다.
자바 라이브러리(spring-retry)에서 발췌한 코드이다.
if (!parameterTypes[i].isAssignableFrom(argument.getClass())) {
return false;
}
Parameter가 int이고, Argument가 Integer가 되면 false가 반환하게 되어 사용자가 의도치 않게 동작을 하게 될 것이다.
ㅁ 함께 보면 좋은 사이트
ㅇ devkuma - Kotlin 기본 자료형(Primitive type)과 참조 자료형(Reference type)
ㅇ Meezzi - [Kotlin] 코틀린 기본 자료형(Primitive type)과 참조 자료형(Reference type)
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] 널 안정성, Null safety (0) | 2024.05.15 |
---|---|
[Kotlin] 변수 선언 (0) | 2024.05.14 |
[Kotlin] 데이터 타입 (0) | 2024.05.12 |
[Kotlin] 기본 문법 (0) | 2024.05.11 |
[Kotlin] 개발 환경 세팅 (0) | 2024.05.09 |