int Integer
타입 기본 타입(primitives) 객체(wrapper class)
자료형 값만 저장하는 가장 단순한 자료형 int를 객체로 만든 클래스
null 불가 가능
매소드 없음 가능
자료구조에 넣기 불가 가능
성능 빠름 느림 (객체니까)
저장 스택(stack) 힙(heap)
참조 타입(reference type)이라

 


주요한 차이점들

(1) null 가능 여부

Integer x = null; // 가능
int y = null;     // ❌ 컴파일 에러

 

 

(2) 자료구조에 넣을 때

Java의 ArrayList, HashMap, Set 같은 컬렉션은 기본 타입을 못 넣음 → 객체만 가능

그래서:

이런 건 안됨

ArrayList<int> list; // 에러

 

이런 식으로 해야 함

ArrayList<Integer> list;

 

 

(3) 메소드 호출 여부

Integer는 메소드 사용 O
int는 값만 저장하는 타입

Integer x = 10;
x.compareTo(5);  // 가능

int y = 10;
// y.compareTo(5);  // ❌ 불가능

 

 

(4) 자동 박싱 / 언박싱 (Auto Boxing / Unboxing)

자바는 int ↔ Integer 자동 변환을 지원함.

Integer a = 10;   // int → Integer (autoboxing)
int b = a;        // Integer → int (unboxing)

 

하지만 조심해야 함:

Integer c = null;
int d = c;   // ❌ NullPointerException

 

 


 

언제 무엇을 써야 하나?

✔ 연산용, 루프 변수, 단순 숫자 → int

int count = 0;

 

✔ ArrayList/Map/Set 등 컬렉션에 넣는 값 → Integer

List<Integer> list = new ArrayList<>();

 

✔ null이 필요할 때 → Integer

Integer score = null; 

 

+ Recent posts