📌개요
👺과거에 같은 주제로 포스팅을 한 적이 있었습니다. 추가할 내용이 있어 새로 포스팅 하려 합니다.
📌데이터 타입의 구분(기본 타입, 참조 타입)
개발자는 프로그램을 구성할 때 프로그램 내에서 사용될 데이터를 정의하고 정의된 데이터를 바탕으로 기능을 구현합니다. 데이터가 어떻게 정의되느냐에 따라 프로그램에 영향이 미치기 때문에 완성도 있는 프로그램을 개발하기 위해서는 적재적소에 맞는 데이터 타입의 사용은 개발자에게 꼭 필요한 조건입니다. 이번 포스팅에서는 JAVA에서 사용되는 데이터 타입에 대한 분류와 이해를 하도록 하겠습니다.
🚨올바른 데이터 타입의 사용에 따른 프로그램에 완성도에 대한 생각은 사실 현재도 같습니다. Java에서는 데이터 타입은 두 가지로 분류됩니다. 바로 기본타입(Primitive Type)과 참조 타입(Reference Type)입니다. 이제 지난번보다 더 자세히 다루어 보겠습니다.
📌기본 타입(Primitive Type)이란?
- 정수형 (byte, short, int, long)
- 실수형 (float, double)
- 논리형 (boolean)
- 문자형(char)
타입 | 크기 |
byte | 1 byte |
short | 2 byte |
int | 4 byte |
long | 8 byte |
float | 4 byte |
double | 8 byte |
boolean | 1 byte |
char | 2 byte |
🚨각 자료형에 맞는 타입별 사용하는 메모리의 크기는 위와 같습니다.
📌기본 타입(Primitive Type) 예시
int intCount = 10; //4 byte 할당
double doubleCount = 10; //8 byte 할당
System.out.println(intCount);
System.out.println(doubleCount);
//10
//10.0
🚨위의 코드를 보면 int, double로 선언하였을 때 할당되는 메모리의 크기가 다릅니다. 이처럼 데이터의 타입을 맞게 사용하지 않으면 쓸데없는 메모리의 낭비가 있으므로 데이터의 타입을 잘 지정해주어야 한다. 지금까지는 JAVA의 데이터 타입 중 기본타입 변수를 우선 다루어 봤습니다. 하지만 JAVA에서는 기본타입뿐 아니라 객체의 주소를 참조하는 참조 타입도 존재합니다.
📌참조 타입(Reference Type)이란?
변수에 값이 들어가는 기본 타입과 다르게 주소 값이 들어있는 타입이 바로 참조 타입이다. 즉 주소 값을 통해 객체를 참조하기 때문에 참조 타입이라고 부릅니다. 배열, 열거, 클래스, 인터페이스 타입등이 있다. 기본 타입과의 가장 큰 차이는 저장되는 값이 무엇인가이다. 또한 타입에 따른 메모리에 저장되는 영역이 다르다.
📌타입에 따른 메모리 저장 영역
🚨Stack Area
- 기본 타입이면 선언된 이후 정적으로 메모리에 할당되기 때문에 스택(Stack) 영역에 할당됨
- 기본 타입인 경우 선언 즉시 할당된 메모리의 크기가 고정적임
- 메서드 호출 시 실행되고 끝나면 제거됨
🚨Heap Area
- 객체와 배열이 생성되는 힙(Heap) 영역에서는 참조 타입의 주솟값이 저장됨
- 참조할 내용이 없으면 JAVA의 가비지 콜렉터가 알아서 제거함
- "new" 키워드를 사용하여 객체 생성 시 저장됨
'Languages > Java' 카테고리의 다른 글
[Java]컬렉션(Collection)의 개념과 구조 파악 하기 (4) | 2023.03.29 |
---|---|
[Java]JSON과 GSON의 관계는 무엇인가? (5) | 2023.03.22 |
[Java]this 키워드의 의미와 사용 방법 (9) | 2023.02.14 |
[Java]함수형 인터페이스(Functional Interface) 사용해보기 (8) | 2023.02.08 |
[Java]SecureRandom 클래스를 이용한 임시 비밀번호 생성 방법 (0) | 2023.02.03 |