본문 바로가기
☕️ Java

Java의 데이터 타입 분류와 메모리 할당

by iirin 2022. 12. 19.

데이터 타입의 분류

  • 프로그램은 자료구조(데이터)와 알고리즘의 결합으로 이루어진다.
  • Java의 데이터 타입에는 크게 기본타입(primitive type)과 참조타입(reference type)으로 분류된다.

기본 타입

기본 타입 메모리 사용 크기 저장되는 값 범위
byte 1byte -2^7 ~ (2^7 - 1)
char 2byte 0 ~ (2^16 - 1), 유니코드
short 2byte -2^15 ~ (2^15 - 1)
int 4byte -2^31 ~ (2^31 - 1)
long 8byte -2^63 ~ (2^63 - 1)
float 4byte (+/-)1,4E-45 ~ (+/-)3.4028235E38
double 8byte (+/-)4.9E-324 ~ (+/-)1.7976931348623157E308
boolean 1byte true, false

참조 타입

  • 기본 타입으로 선언된 변수는 실제 값을 스택영역에 변수 값으로 저장하지만, 참조 타입은 주소값을 갖게 된다.
  • 힙 메모리 주소를 통해 객체를 참조한다는 뜻으로 참조 타입이라고 부른다.

 

메모리 할당

  • 어떠한 변수를 선언하면 메모리가 할당된다.
  • 변수를 선언하기 위해 할당되는 메모리로는 크게 스택과 힙이 있다.

스택 Stack

  • 함수의 호출과 함께 지역 변수, 매개변수 등이 할당.
  • 정렬된 방식으로 메모리가 할당되고 해제된다.
  • 실제 값들이 저장되는 것.

힙 Heap

  • 클래스 변수(혹은 인스턴스 변수)또는 객체 등이 할당된다.
  • 우연하고 무질서하게 메모리가 할당된다.
  • JVM이 가비지 컬렉터를 통해 메모리 해제를 관리한다.

 

예시 1

public void test() {
    // Primitive Value
    int x = 0;
    float y = 3.14f;
    boolean isTrue = true;
}

예시2

public void test() {
    // Primitive Value
    int x = 0;
    float y = 3.14f;
    boolean isTrue = true;

    // Object : Reference type
    String name = "new-pow";

    String[] friends = new String[3];
    friends[0] = "Kim";
    friends[1] = "Lee";
    friends[2] = "Shin";

}


참고