[Java]개념-int와 integer차이

Paek·2023년 7월 7일
0

코테공부 자바

목록 보기
2/25

최근 Stream 메소드를 사용해보면서, int와 Integer가 차이가 있다는 것을 알게되었고 어떤 것인 다른지 구체적으로 정리해보려고 합니다.


Int는 무엇인가? (primitive type)

  • int는 변수의 타입(data type)이다

그렇다면 변수는 무엇일까요?
변수는 '값을 저장할 수 있는 메모리 상의 공간'을 의미합니다.

Primitive

  • 데이터를 가지는 자료형을 뜻하는 원시적이 자료형.
  • 메소드를 가지지 못한다.

int a=0;
char a = 'a';

에서 a는 변수(변수명)이라고 부릅니다.

int와 char을 변수의 타입(=data type = 자료형)이라고 합니다.

즉, 자료형은 'data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것' 이라고 볼 수 있습니다.

이러한 자료형은 기본형(primitive type)과 참조형(referece type)으로 나뉘는데,
int 는 이 중 기본형에 속합니다.

위의 그림은 기본형의 종류에 대해 설명하고있습니다.

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);

주로 이렇게 사용하였습니다.

Integer란 위에서 다룬 int형을 표현해야하는 경우에

  • 매개변수로 객체를 필요로 할때
  • 기본형 값이 아닌 객체로 저장해야 할 때
  • 객체 간 비교가 필요할 때

이런 경우 기본형을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
그리고 Integer는 int의 레퍼클레스 라고 할 수 있습니다.

래퍼 클래스(wrapper class)
객체가 기본 데이터 유형을 래핑하거나 포함하는 클래스

모든 기본형은 래퍼클래스를 생성할 수 있고, 이는 아래와 같습니다.

차이점?

int는 자료형으로서, 산술연산이 가능하고 null로 초기화 할 수 없고, 저장공간이 4byte로 작습니다.
Integer는 래퍼 클래스로서, Unboxing하지 않을 시 산술 연산이 불가능하고 null값 처리가 가능하며 저장공간이 크고, null이 가능하기 때문에 Sql에 용이하게 사용된다는 차이점이 있습니다.

boxing : primitive type -> wrapper class 변환 ( int to Integer )
unboxing : wrapper class -> primitive type 변환 ( Integer to int )

프로그램에 무리가지 않기 위해 int를 사용합니다. 용량이 더 작고 null값이 들어올 수 없으니 값이 없을때 에러를 뱉어내기 때문입니다.

Integer는 null 또는 데이터를 wrapper할 때 사용한다고 알면 좋을것 같습니다.

출처 및 참고
https://smin1620.tistory.com/287
https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글