ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Data Structure] Primitive / Reference Type 의 차이
    Data Structure & Algorithm/Data Structure 2023. 10. 12. 21:52

    자바 관련 책을 읽다보니 문득 int 와 Integer 의 차이가 명확하게 생각나지 않았다.

    그래서 오늘은 int 와 Integer 의 차이가 무엇인지 찾아보려 한다.

     

    📌 목차 

    - 자료형 ( Data Type ) - Primitive / Reference Type

    - int 와 Integer 의 차이는?

     

     

    📌 자료형 ( Data Type ) - Primitive / Reference Type 

    자료형 또는 데이터 타입이란 프로그래밍 언어에서 여러 종류의 데이터를 식별하는 분류를 뜻한다.

     

     

    [Data Structure] 자료 구조 개념 및 종류

    📌 목차 - 자료구조란 무엇일까? - 자료구조의 특징 및 사용 - 자료구조의 종류 📌 자료구조란 무엇일까? Data Structure (자료 구조) 란, 데이터 값의 모임, 각 원소들이 논리적으로 정의된 규칙에

    hhsit.tistory.com

     

    위의 자료 구조에서 찾아볼 수 있듯, 자료형 (Data Type)은 기본자료형 (Primitive Type) 참조자료형 (Reference type) 으로 나뉘어져 있다.

    더 상세하게 기본 자료형은 문자형, 정수형, 실수형, 논리형으로, 참조 자료형은 스트링/래퍼 클래스형, 인터페이스형, 배열형으로 나뉘어져있다.

     

     

    ⚡Primitive Type (원시 타입) 

    - 변수에 값 자체를 저장하는 자료형이다.

    - 반드시 사용하기 전에 선언되어야 한다.

    - 비객체 타입이기 떄문에 Null 값을 가질 수 없다.

    - 실제 값을 저장하는 공간으로 Stack 메모리에 저장된다.

    - 컴파일 시점에 데이터의 표현 범위를 벗어나면 컴파일 에러가 발생한다.

    - byte, char , short, int, long, float, double, boolean

     

    Primitive Type

     

    ⚡Reference Type (참조 타입)

    - 메모리 상에서 객체가 있는 위치를 저장한다.

    - java.lang.Object 를 상속받는 타입이다.

    - 빈 객체를 의미하는 Null 값을 가질 수 있다.

    - 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 Heap 메모리에 저장된다.

    - 런타임 에러가 발생한다.

    - Array, Enumeration, Class, Interface

     

    Reference Type (참조 타입) - Wrapper Class

    참조 타입 자료형 중에서 기본 자료형 (int, double, boolean 등)의 데이터를 인스턴스(객체)로 만들기 위해 사용하는 클래스이다.

    사용하는 이유는 제네릭, Null 값 가능 여부, 매개변수 등에서 Primitive Type 이 아닌 Reference Type 을 필요로 하는 경우가 있기 때문이다.

    인스턴스를 생성하여 Heap 메모리에 저장하고 상속 및 재사용이 가능하며 다양한 메서드를 이용할 수 있다.

     

    Wrapper Class

     

    Boxing / Un Boxing

    박싱이란 기본 자료형의 데이터를 래퍼 클래스의 객체로 만드는 과정을 의미하며,

    언박싱은 래퍼 클래스의 데이터를 기본 자료형으로 변환하는 과정을 말한다.

     

     

    📌 int 와 Integer 의 차이는? 

    종합해보면면

    int 는 Primitive Type 이고,

    Integer 는 Reference Type 의 Wrapper Class 에 속한다.

     

    1. Primitive 는 null 이 불가능하지만 Reference 는 가능하다.

    2. Primitive 는 제너릭에서 사용이 불가능하지만, Reference 는 가능하다.

    3. Primitive 는 Stack 메모리에 값이 존재하기 때문에 접근 속도가 비교적 빠르지만,

        Reference 는 Stack(정적) 메모리에 참조값만 있고 실제값은 Heap(동적) 메모리에 존재하여 Unboxing 과정을 거치므로 비교적 느리다.

        (예외적으로 Primitive 값이 매우 크다면, Reference 가 더 효율적일 수 있다.)

     

    즉 각각 다른 자료형이기 때문에 박싱과 언박싱을 사용하여 변환 후 때에 따라 사용하면 되는 것이다.

     

     

    📌 Reference 

    @츄르코딩 - [Java] int와 Integer는 뭐가 다를까?

    https://smin1620.tistory.com/

    @yeastriver - [211105 금] 셀 과제 : primitive type, reference type

    https://yeastriver.tistory.com/7

    댓글

Designed by IT's H.H.