결론부터 말하자면,
integer는 클래스(Wrapper) 타입이고, int는 long double형과 같은 원시형변수이다.
(심지어 서로 변환이 가능)
int i = integer.intValue();
Integer integer = new Integer(i);
이런식으로 변환이 가능하다…
1) int는 무엇인가? (primitive type)
int는 변수의 타입(data type)이다.
변수(variable)는 '값을 저장할 수 있는 메모리 상의 공간'을 의미 합니다.
int a = 3;
char firstName = "H";
에서 a 나 H 는 변수(변수명)가 되는 것입니다.
그리고 그 앞에 적힌 int 와 char가 변수의 형을 지정해주고 있는 것이,
변수의 타입( = data type = 자료형 ) 이라 합니다.
즉, 자료형은 'data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것' 이라고 볼 수 있습니다.
이러한 자료형은 기본형(primitive type)과 참조형(referece type)으로 나뉘는데,
int 는 이 중 기본형에 속합니다.
기본형에는 다음과 같은 종류가 있습니다.
2) 그렇다면 Integer는 무엇인가? (wrapper class)
ArrayList<Integer> intList = new ArrayList<Integer>(); intList.add(1); intList.add(2); System.out.println(intList.get(0));
String stringNum = "123"; int intNum = Integer.parseInt(stringNum); System.out.println(intNum);
1)에서 다룬 기본형을 표현해야 하는 경우가 있는데
- 매개변수로 객체를 필요로 할 때
- 기본형 값이 아닌 객체로 저장해야할 때
- 객체 간 비교가 필요할 때
이런 경우 기본형을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
그리고 Integer는 int의 레퍼클레스 라고 할 수 있습니다.
모든 기본형은 래퍼클래스를 생성할 수 있고, 이는 아래와 같습니다.
∴ int와 Integer의 비교
int : 자료형(primitive type)
- 산술 연산 가능함
- null로 초기화 불가
Integer : 래퍼 클래스 (Wrapper class) (객체)
- Unboxing하지 않을 시 산술 연산 불가능함
- null값 처리 가능
- null 값 처리가 용이하기 때문에 SQL과 연동할 경우 처리가 용이하다.
- DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용할 수 있음.
int와 Integer간의 변환
boxing : primitive type -> wrapper class 변환 ( int to Integer )
unboxing : wrapper class -> primitive type 변환 ( Integer to int )
으로 정리할 수 있을 것 같습니다.
- valueOf()와 parseInt()의 차이
둘 다 Integer(클래스)의 메소드
Integer.valueOf(String) | Integer 클래스를 리턴하기 때문에 산술 연산을 할 수 없다. |
Integer.parseInt(String) | int 형을 리턴하기 때문에 산술 연산을 할 수 있다. |
※ 정수로 파싱할 수 없는 String을 파라미터로 전달하면 에러
valueOf (30) + valueOf(20) 을하면 50이된다.
엥? 산술연산이 불가능하다고 했는데 50이 어떻게 되지?? 라고 생각할수 있지만, 오토언박싱**이 되어 intger형이 int형으로 자동 형변환되어 연산이 가능하다.
** Auto boxing / unboxing
- 자바에서는 모든 경우는 아니지만 대부분의 경우에는 자동으로 boxing / unboxing을 해준다.
- 예제 코드
int i = 1;
Integer integer = i; // int -> Integer (Auto boxing)
int i2 = integer; // Integer -> int (Auto unboxing)
출처: https://includestdio.tistory.com/1 [includestdio]
'💁❓' 카테고리의 다른 글
💁❓라이브러리? 프레임워크? (0) | 2021.12.31 |
---|---|
💁❓<div> vs <span> vs <p> (0) | 2021.12.26 |
댓글