Languages/Java

[Java]데이터 타입을 분리해서 알아두기(기본 타입, 참조 타입)

MoonSta 2023. 3. 21. 09:24

📌개요

https://mooonstar.tistory.com/entry/JAVA-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EA%B8%B0%EB%B3%B8%ED%83%80%EC%9E%85-%EC%B0%B8%EC%A1%B0%ED%83%80%EC%9E%85

 

[JAVA] 데이터의 기본타입, 참조타입

⚡️프로그램의 구성 개발자는 프로그램을 구성할 때 프로그램 내에서 사용될 데이터를 정의하고 정의된 데이터를 바탕으로 기능을 구현합니다. 데이터가 어떻게 정의되느냐에 따라 프로그램

mooonstar.tistory.com

👺과거에 같은 주제로 포스팅을 한 적이 있었습니다. 추가할 내용이 있어 새로 포스팅 하려 합니다.

 

📌데이터 타입의 구분(기본 타입, 참조 타입)

 개발자는 프로그램을 구성할 때 프로그램 내에서 사용될 데이터를 정의하고 정의된 데이터를 바탕으로 기능을 구현합니다. 데이터가 어떻게 정의되느냐에 따라 프로그램에 영향이 미치기 때문에 완성도 있는 프로그램을 개발하기 위해서는 적재적소에 맞는 데이터 타입의 사용은 개발자에게 꼭 필요한 조건입니다. 이번 포스팅에서는 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" 키워드를 사용하여 객체 생성 시 저장됨