프로그래머스 Lv.1 같은 숫자는 싫어 문제를 풀다가 ArrayList관련된 것을 더 알았는데, 해당 리스트를 선언할때 Integer로 선언하길래 Integer와 Int의 차이가 무엇인지 궁금해서 알아보게 되었습니다.
Integer
- Wrapper 클래스(한 객체를 의미) 이다.
- (Unboxing을 하지 않으면) 산술 연산이 불가능 하지만, null 값을 처리할 수 있다.
- null 값 처리가 용이하기 때문에 SQL과 연동할 경우에 처리를 원할하게 할 수 있다.
- DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용할 수 있다.
Int
- primitive 자료형이다. (long, float, double 등)
- 산술 연산이 가능하다.
- null값 처리 불가능
Wrapper 클래스란?
JAVA는 자료형으로 기본 타입(primitive type - char, int 등)과 참조 타입(reference type - class, interface)으로 나뉘는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다.
| 기본 타입 (primitive type) | 래퍼 클래스 (wrapper class) |
| byte | Byte |
| char | Character |
| int | Integer |
| float | Float |
| double | Double |
| boolean | Boolean |
| long | Long |
| short | Short |
Int와 Interger의 변환
Int는 산술이 가능하지만 Integer는 산술이 불가능하기 때문에 변환 과정이 필요!
기본타입(primitive type) --- (Boxing) ---> 래퍼클래스(wrapper class)
래퍼클래스(wrapper class) --- (Unboxing) ---> 기본타입(primitive type)
// 1. Integer n2를 int n1으로 변환 -> Unboxing
int n1 = n2.intValue();
// 2. int n1를 Integer n2으로 변환 -> Boxing
Integer n2 = new Integer(n1);
Auto boxing / unboxing
자바에서는 모든 경우는 아니지만, 대부분의 경우에는 자동으로 boxing / unboxing을 해준다.
int n1 = 1;
Integer integer = n1; // int -> Integer (Auto boxing)
int n2 = integer; // Integer -> int (Auto unboxing)
참고
'Programming > JAVA' 카테고리의 다른 글
| [JAVA] String, StringBuffer, StringBuilder 차이 (0) | 2023.09.05 |
|---|---|
| [JAVA] List와 ArrayList차이(Generic) (0) | 2023.09.05 |
| Ch4. 제어 흐름 이해하기 (0) | 2021.07.18 |
| Ch3. 자바의 여러 가지 연산자 (0) | 2021.07.17 |
| Ch2. 변수와 자료형 (5) | 2021.07.06 |
댓글