프로젝트 도중 정말 아무 생각없이, 당연한 듯이, 어느 상황에는 int를 사용하고, 어느 상황에는 Integer을 사용하고 있는 나를 발견했다.
그냥 당연히 ArrayList 생성할때는 Integer를 쓰고, 변수 선언할때는 int형을 쓰면서 기계적인 코딩을 하고 있었다.
그런데, 누군가 int와 Integer이 무슨 차이냐고 물어보았을 때 답할 자신이 없는 내가 너무 창피했다. 자바를 완전히 이해했다고는 할 수 없지만, 너무나 기본적인 내용인데 모르고 있기 때문이다.
그래서 이번 포스팅에서 int와 Integer의 차이에 대해 알아보려한다.
int
Integer
개념은 위와 같다.
개념만 보면 제대로 이해가 되지 않을 수 있기 때문에, 예시 코드를 하나 작성하겠다.
int와 Integer은 서로 변환이 가능하다.
int i = integer.intValue(); // Integer객체의 int형 멤버변수를 반환하는 intValue()메서드를 통해 대입가능
Integer integer = new Integer(i); // Integer 객체의 생성자에 int형 변수를 넘겨주어 객체 생성
쉽게 정리하면, int는 그냥 데이터 타입이고, 값이 저장될 공간의 크기와 저장 형식을 정의한 것이다.
그리고 Integer은 클래스이다. 이 클래스는 int형 변수를 멤버변수로 가지고, parseInt(), valueOf()과 같은 메서드를 통해 int형 데이터를 다양하게 활용할 수 있다.
ArrayList arrayList= new ArrayList<>;
와 같이 제네릭을 사용할때는 <> 안에 Primitive 자료형이 아닌, 객체가 들어가야 한다.
이렇게, int와 Integer의 차이에 대해 알아보았다. 정말 기본적인 내용이지만, 모르고 지나치고 있었다.
당연한 코드는 있어서는 안된다. 모든 코드에는 근거가 있어야 한다.