-
int와 Integer 차이Backend/Java 2022. 10. 4. 20:59
일단 int는변수의 타입으로 primitive type(기본형) 중 하나이다.
primitive type에는 위와 같은 종류들이 있다.
Integer은Wrapper class의 하나이다.
Wrapper class는 기본형을 객체로 다루기 위해서 사용하는 클래스이다.
모든 기본 형은 Wrapper class를 생성할 수 있고 종류는 아래와 같다.
기본형을 언제 객체로 다룰 때 주로 쓸까를 생각해보면
1. 기본형 값이 아닌 객체로 저장해야할 때
2. 객체 간 비교가 필요할 때
3. 매개변수로 객체를 필요로 할 때
가 있을 수 있다.
또한 나의 경우 현업에서 언제 질문을 받았냐면, Repository에서 받아오는 데이터가 숫자의 형태였고 아무생각없이 Integer를 선언해서 받아왔다.
사수님이 왜 int가 아닌 Integer로 받냐에 대답을 못했었다.
쿼리문을 보아하니 null이 아니라 나오더라도 숫자 0이 나오는 형태라 무조건 int인데 왜 integer를 쓰냐는 물음에
그 때 두 자료형의 차이가 있음을 인지했고 그에 따라 정리를 해보았다.
여기에서 눈치를 챘겠지만 객체로 저장할 수 있기 때문에
기본형을 Wrapper Class로 감싸면 null처리가 가능한 장점이 있다.
즉 Wrapper Class의 경우 null값이 처리가 가능하지만 unboxing이라는 과정이 있어야 산술 연산이 가능하고
primitive type의 경우 바로 산술 연산은 가능하지만 null로 초기화를 할 수 없으니 null 처리를 신경써야한다.
*boxing : primitive type -> wrapper class 변환 ( ex. int to Integer )
*unboxing : wrapper class -> primitive type 변환 ( ex. Integer to int )
결론
기본형 : 변수의 타입 중 하나, null로 초기화는 안됨
WrapperClass : 객체이기에 unboxing해야 데이터처리 가능,
null 받을 수 있음, 객체로 저장하거나 객체간 비교등에 사용 가능
'Backend > Java' 카테고리의 다른 글
인터페이스 vs 추상클래스 (0) 2022.11.23 객체지향 프로그래밍 정의, 장단점, 객체지향 프로그래밍 키워드 (0) 2022.11.15 객체지향프로그래밍 vs 절차지향프로그래밍 (0) 2022.11.15 overloading vs overriding 차이 오버로딩 vs 오버라이딩 차이 (0) 2022.10.31 String ↔ Char 변환 정리 (0) 2022.09.21