int? Integer? (Java)

권 해·2023년 1월 7일
0

Java

목록 보기
1/5

프로젝트 도중 정말 아무 생각없이, 당연한 듯이, 어느 상황에는 int를 사용하고, 어느 상황에는 Integer을 사용하고 있는 나를 발견했다.
그냥 당연히 ArrayList 생성할때는 Integer를 쓰고, 변수 선언할때는 int형을 쓰면서 기계적인 코딩을 하고 있었다.
그런데, 누군가 int와 Integer이 무슨 차이냐고 물어보았을 때 답할 자신이 없는 내가 너무 창피했다. 자바를 완전히 이해했다고는 할 수 없지만, 너무나 기본적인 내용인데 모르고 있기 때문이다.
그래서 이번 포스팅에서 int와 Integer의 차이에 대해 알아보려한다.

int

  • int는 Primitive(원시) 자료형이다. 여기서 Primitive 자료형이란 데이터를 가지는 자료형을 뜻한다.
  • 메소드를 가지지 못하기 때문에 데이터만을 가지고 있는 자료형이다.

Integer

  • Integer은 Wrapper 클래스이다. 여기서 Wrapper 클래스란 객체가 기본 데이터 유형을 래핑하거나 포함하는 클래스를 만한다. 래퍼 클래스에 대한 객체를 만들 때 필드를 포함하고 이 필드에 기본 데이터 유형의 저장이 가능하다.

개념은 위와 같다.
개념만 보면 제대로 이해가 되지 않을 수 있기 때문에, 예시 코드를 하나 작성하겠다.
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의 차이에 대해 알아보았다. 정말 기본적인 내용이지만, 모르고 지나치고 있었다.
당연한 코드는 있어서는 안된다. 모든 코드에는 근거가 있어야 한다.

0개의 댓글