Languages/Java

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

MoonSta 2022. 12. 19. 10:58

⚡️프로그램의 구성 

 개발자는 프로그램을 구성할 때 프로그램 내에서 사용될 데이터를 정의하고 정의된 데이터를 바탕으로 기능을 구현합니다. 데이터가 어떻게 정의되느냐에 따라 프로그램에 영향이 미치기 때문에 완성도 있는 프로그램을 개발하기 위해서는 적재적소에 맞는 데이터 타입의 사용은 개발자에게 꼭 필요한 조건입니다. 이번 포스팅에서는 JAVA에서 사용되는 데이터 타입에 대한 분류와 이해를 하도록 하겠습니다. 

⚡️변수 (variable)

  프로그래밍 중 수시로 변하는 값을 처리하기 위해 변수를 사용합니다. 변수를 사용하기 위해선 선언이라는 과정이 필요한데 선언을 하게 되면 메모리 상에 타입에 따른 메모리 공간이 확보됩니다. 확보되는 공간은 데이터의 타입에 따라 다르며 다음과 같습니다. 

타입 크기
byte 1 byte
short 2 byte
int 4 byte
long  8 byte
float 4 byte
double  8 byte
boolean 1 byte
char 2 byte
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에서는 기본타입뿐 아니라 객체의 주소를 참조하는 참조 타입도 존재합니다. 

⚡️참조 타입 

 변수에 값이 들어가는 기본 타입과 다르게 주소 값이 들어있는 타입이 바로 참조 타입이다. 즉 주소 값을 통해 객체를 참조하기 때문에 참조 타입이라고 부릅니다. 

public class refType {
   public static void main(String[] args) {
     //re에는 클래스 ref의 주소값이 저장됩니다.
     ref re = new ref();
   }
class ref{
}

⚡️타입에 따른 메모리 저장 영역 

⚡️Stack Area

  • 기본 타입이면 선언된 이후 정적으로 메모리에 할당되기 때문에 스택(Stack) 영역에 할당됨
  • 기본 타입인 경우 선언 즉시 할당된 메모리의 크기가 고정적임
  • 메서드 호출 시 실행되고 끝나면 제거됨

⚡️Heap Area

  • 객체와 배열이 생성되는 힙(Heap) 영역에서는 참조 타입의 주솟값이 저장됨
  • 참조할 내용이 없으면 JAVA의 가비지 콜렉터가 알아서 제거함 
  • "new" 키워드를 사용하여 객체 생성 시 저장됨