자바에서 int와 Integer의 차이는 무엇일까?
기본형 변수
기본형 변수는 실제 값을 저장합니다. 실제 값을 저장하기 때문에 산술 연산이 가능합니다. 그리고 null로 초기화 할 수 없습니다.
기본형 변수는 스택(stack)에 실제 값을 저장하여 사용합니다.
boolean, char, byte, short, int, long, float, double 이 있습니다.
참조형 변수
저장된 값의 주소를 값으로 갖습니다. 기본형 변수 8개를 제외한 나머지 타입들 입니다. 주소 값을 갖기 때문에 산술 연산이 불가능 합니다. 하지만 null로 초기화 할 수 있습니다.
참조형 변수는 힙(heap)에 실제 값을 저장하고 해당 주소를 스택에 저장하여 사용합니다. 마치 객체들이 하는 것과 같습니다.
Integer, Boolean, String, List 등이 있습니다.
비교
자바에서 우리는 두 타입을 사용할 때 별다른 문제점을 느끼지 못했습니다. int에서 Integer로 변경이 자동으로 되었습니다. 그 이유는 박싱(boxing)과 언박싱(unboxing)을 자바에서 자동으로 해주었기 때문입니다. 박싱은 기본형에서 참조형으로 변경할 때에 값을 래핑해서 힙 영역에 두고 주소 값을 스택에 저장합니다. 언박싱은 참조형에서 기본형으로 변경할 때에 주소 값을 이용해서 힙 영역에서 값을 탐색하여 스택에 저장합니다. 이러한 과정이 필요하기 때문에 비용이 소모됩니다. 두 타입의 사용 이유를 정확하게 알고 있다면, 프로그램의 비용을 줄일 수 있습니다.
기본형은
- call by value로 값의 변경이 필요 없을 경우
참조형
- DB와 연동되어 null 처리가 필요한 경우
- call by reference로 메서드에 인해서 값이 변경될 가능성이 있을 경우
참조
- call by value & call by reference
끝.
'IT > Java' 카테고리의 다른 글
Arrays.asList() vs ArrayList() (0) | 2022.12.19 |
---|---|
팩토리 패턴 (Factory Pattern) (0) | 2022.11.07 |
[함수형 데이터 처리] 스트림 (2) | 2022.09.25 |
동작 파라미터화 (0) | 2022.08.13 |
자바 8 등장 (0) | 2022.08.13 |