기본 자료형과 참조형 타입

Soobin Kim·2024년 3월 24일

Java

목록 보기
5/47

Java의 데이터 타입

자바에서 데이터 타입은 크게 기본 자료형(Primitive Type)과 참조형 타입(Reference Type)으로 나뉜다.
두 타입의 주요 차이점은 메모리에 저장되는 방식과 메모리 할당에서 찾을 수 있다.

메모리 저장 구조

메모리 저장 방식

변수들은 심볼 테이블(Symbol Table)에 변수의 이름과 그 주소가 함께 저장된다.
기본 자료형을 담는 변수는 해당 주소(Stack Memory)에 저장된 값이 직접적인 value이며,
참조변수는 Stack Memory에 할당된 값이 Heap Memory 영역의 생성된 인스턴스의 주소 값이다.

따라서 참조변수를 통해 Heap Memory에 저장된 객체에 접근할 수 있게 된다.

기본 자료형 (Primitive Type)

기본 자료형은 가장 기본이 되는 데이터 타입이다.

기본 자료형의 종류

참조형 타입 (Reference Type)

참조형 타입은 객체의 주소를 저장하는 타입이다.

참조형 타입의 종류

new 연산자

new 연산자는 클래스 타입의 인스턴스를 생성해주는 연산자이며, 다음과 같은 순서로 동작한다:

  1. Heap 영역에 데이터를 저장할 공간을 할당한다
  2. 객체의 멤버변수들을 기본값으로 초기화한다
  3. 생성자를 호출하여 객체를 초기화한다
  4. 생성된 객체의 참조값을 반환한다

new 연산자의 동작

new 연산자를 사용할 때는 참조변수와 대입연산자 이후의 타입이 일치해야 인스턴스를 생성할 수 있다.
상속 관계에 있을 경우, 자동 또는 강제형변환을 통해 타입을 일치시켜야 한다.

객체 생성 과정 예시

// 1. 참조변수 선언
Dog a;
/*
Dog 클래스 타입의 참조변수 a를 선언한다.
이때 메모리에 참조변수 a를 위한 공간이 Stack Memory에 할당되었지만
인스턴스가 생성되지 않아 Heap Memory에 아무것도 할당되지 않은 상태다.
*/

// 2. 인스턴스 생성
a = new Dog();
/*
1. new 연산자로 Heap 메모리에 Dog 객체를 위한 공간이 할당된다
2. 객체의 멤버변수들이 기본값으로 초기화된다
3. Dog 클래스의 생성자가 호출되어 객체가 초기화된다
4. 생성된 객체의 Heap 메모리 주소가 Stack의 참조변수 a에 할당된다
*/

// 3. 메서드 호출
a.bark();
/*
참조변수 a가 가지고 있는 주소값을 통해 
Heap Memory에 저장된 Dog 객체에 접근할 수 있게 된다.
*/

참고
Heap Memory는 자바 런타임에 의해 객체와 JRE 클래스에 메모리를 할당하는 데 사용된다.
자바에서 모든 객체는 동적으로 Heap Memory에 할당된다.

0개의 댓글