Home

(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것

Published in java
October 02, 2024
2 min read
(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것

안녕하세요, ‘코딩하는곰’입니다! 오늘은 자바 개발자라면 반드시 알아야 할 Wrapper 클래스에 대해 깊이 있게 알아보겠습니다. 특히 int와 Integer의 차이점과 오토박싱 개념을 중심으로, 실제 개발에서 어떻게 활용되는지 상세히 설명드리겠습니다. 자바의 기본형과 참조형을 이해하는 것은 성능 최적화에도 큰 도움이 되니, 끝까지 집중해주세요!

(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것
(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것


1. Wrapper 클래스란 무엇인가?

Wrapper 클래스는 자바의 기본 데이터 타입(primitive type)을 객체로 다루기 위해 제공되는 클래스입니다. 자바는 객체 지향 언어이지만 성능 향상을 위해 기본형을 제공하는데, 때로는 객체로 다뤄야 할 경우가 있습니다. 이때 사용하는 것이 바로 Wrapper 클래스입니다. 자바에는 8개의 기본형에 대응하는 Wrapper 클래스가 존재합니다:

  • byte → Byte
  • short → Short
  • int → Integer
  • long → Long
  • float → Float
  • double → Double
  • char → Character
  • boolean → Boolean
// 기본형과 Wrapper 클래스 사용 예제
int primitiveInt = 100;
Integer wrapperInt = Integer.valueOf(100);
System.out.println(primitiveInt); // 100 출력
System.out.println(wrapperInt); // 100 출력

Wrapper 클래스의 주요 용도는 다음과 같습니다:

  1. 컬렉션 프레임워크 사용 시 (List, Set, Map 등)
  2. 객체로 다뤄야 하는 경우 (제네릭 사용 시)
  3. 다양한 유틸리티 메서드 제공 (문자열 변환, 진법 변환 등)

(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것
(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것


2. int vs Integer: 근본적인 차이 이해하기

int와 Integer는 비슷해 보이지만 근본적으로 다른 특징을 가집니다. int (기본형)

  • 스택 메모리에 저장
  • null 값을 가질 수 없음
  • 산술 연산 가능
  • 메모리 사용량 적음 (4byte)
  • 성능이 더 좋음 Integer (참조형)
  • 힙 메모리에 저장
  • null 값 가능
  • 객체이므로 메서드 호출 가능
  • 추가 메모리 사용 (객체 오버헤드)
  • 다양한 유틸리티 메서드 제공
// int와 Integer의 차이 예제
int num1 = 100;
Integer num2 = null; // 가능
// int num3 = null; // 컴파일 에러
System.out.println(Integer.toBinaryString(10)); // "1010" 출력

실제 개발에서는 상황에 맞게 선택해야 합니다. 성능이 중요한 반복문에서는 int를, 컬렉션이나 API 통신에서는 Integer를 사용하는 것이 일반적입니다.

(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것
(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것


두뇌 건강을 위해 매일 스도쿠를 풀고 싶다면, AI 기반 힌트와 스토리 모드를 제공하는 스도쿠 저니를 다운로드해보세요.

3. 오토박싱(AutoBoxing)과 성능 고려사항

오토박싱은 JDK 1.5부터 도입된 기능으로, 기본형과 Wrapper 클래스 간의 자동 변환을 말합니다. 오토박싱 예제:

// 자동 박싱
Integer autoBoxed = 100; // 컴파일러가 Integer.valueOf(100)으로 변환
// 자동 언박싱
int autoUnboxed = autoBoxed; // 컴파일러가 autoBoxed.intValue()로 변환

하지만 편리한 만큼 주의할 점도 있습니다:

  1. 불필요한 객체 생성: 반복문 내에서 오토박싱이 발생하면 많은 객체가 생성될 수 있음
  2. 성능 저하: 기본형 연산보다 느림
  3. NullPointerException: 언박싱 시 null이면 예외 발생
// 성능 비교 예제
long start = System.currentTimeMillis();
Integer sum = 0;
for (int i = 0; i < 1000000; i++) {
sum += i; // 오토박싱 발생!
}
long end = System.currentTimeMillis();
System.out.println("Wrapper 시간: " + (end - start) + "ms");
start = System.currentTimeMillis();
int sumPrimitive = 0;
for (int i = 0; i < 1000000; i++) {
sumPrimitive += i; // 기본형 연산
}
end = System.currentTimeMillis();
System.out.println("기본형 시간: " + (end - start) + "ms");

(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것
(Java 기초) Wrapper 클래스 완벽 가이드 int vs Integer와 오토박싱의 모든 것


로또 번호 선택이 어려울 때는, AI가 분석한 번호 추천과 통계 정보를 제공하는 지니로또AI를 활용해보세요.

Wrapper 클래스는 자바 프로그래밍에서 필수적인 개념입니다. 오늘 배운 int와 Integer의 차이, 오토박싱 개념을 잘 이해하면 더 효율적인 코드를 작성할 수 있을 거예요. 특히 성능이 중요한 애플리케이션에서는 Wrapper 클래스 사용을 신중히 고려해야 합니다. 다음 시간에는 Wrapper 클래스를 활용한 다양한 유틸리티 메서드에 대해 알아보겠습니다. 질문이 있으시면 댓글로 남겨주세요! 코딩하는곰이었습니다. 감사합니다!

✅ 요즘 주목받는 건강기능식품 정보가 궁금하다면, 아임비오컴포트 19종 유산균복합체를 참고해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#java

Share

Previous Article
(자바 기초) 리터럴(Literal)의 모든 것 - 종류와 사용법 총정리

Related Posts

(Java 예외 처리 마스터하기) 다중 catch와 예외 흐름 제어의 모든 것 - 코딩하는곰의 20년 노하우
December 16, 2025
3 min