| 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;
'Java > 기초 공부' 카테고리의 다른 글
| 자바 라이브러리 (0) | 2025.11.26 |
|---|---|
| 인터페이스(interface) (0) | 2025.11.21 |
| 상속(2) - 부모생성자, 오버라이딩, 클래스 형변환 (0) | 2025.11.20 |
| 상속(1) - 상속, 접근제한자, 추상클래스 (0) | 2025.11.20 |
| 클래스 다듬기 - 생성자, this, 오버로딩, 패키지 (0) | 2025.11.20 |