Post

int vs Integer

int

  • 정수를 저장한다.
  • Primitive type (기본 자료형) 이다.

    기본 자료형은 스택 메모리에 값을 직접 저장하기 때문에 처리 속도가 빠르다.

  • 산술 연산이 가능하며, null 값을 가질 수 없다.


Integer

  • 정수를 저장한다.
  • Reference type (참조 자료형) 이다. 객체로 분류된다.

    참조 자료형은 힙 메모리에 객체를 저장하고, 변수는 그 객체를 가리키는 주소를 저장한다.

  • int 값을 감싸는 Wrapper class로, 객체지향 프로그래밍의 이점을 제공한다.
    • null 값을 가질 수 있고, 클래스이므로 메서드를 가질 수 있다.
  • unboxing을 하지 않으면 산술 연산이 불가능하다.

    그러나 자바 5부터는 자동으로 unboxing 이 수행되므로 개발자가 명시적으로 수행하지 않아도 된다.

Wrapper class는 자바의 기본 자료형을 객체로 다룰 수 있게 해주는 클래스이다.

wrapper class


용도

  • int는 빠른 속도를 가지기에 숫자 연산이나 반복문 카운터 같이 성능이 중요한 상황에서 사용된다.
  • Integer는 null 할당이 필요하거나, 컬렉션 객체에 숫자를 저장할 때 사용된다.
    • 자바의 컬렉션 프레임워크는 기본형을 직접 사용할 수 없기 때문에 Wrapper Class 를 사용해야 한다.


autoboxing, unboxing

  • 자바 5부터 autoboxingunboxing을 지원한다. 이는 int 와 Integer 사이의 변환을 자동으로 해준다.

boxing

Autoboxing

  • 기본 자료형의 값을 해당 래퍼 클래스의 객체로 자동으로 변환하는 과정이다.
    1
    
    Integer a = 25; // 25는 int 이지만, 자동으로 Integer 객체로 박싱된다.
    


Unboxing

  • 래퍼 클래스의 객체를 기본 자료형의 값으로 자동으로 변환하는 과정이다.
    1
    2
    
    Integer a = new Integer(25);
    int i = a; // a 객체가 자동으로 int 값으로 언박싱된다.
    


누군가가 물어본다면

int 는 기본 자료형으로 성능이 좋아 반복문 카운팅 등 성능이 중요할 때 사용합니다.

Integer 는 wrapper class로, 기본 자료형을 참조하는 객체입니다. 컬렉션 작업을 할 때 주로 사용합니다.

자바 5부터 autoboxing과 unboxing이 지원되어 두 자료형 간의 변환을 개발자가 신경쓰지 않아도 됩니다.
This post is licensed under CC BY 4.0 by the author.