IT/Java

기본형과 참조형 변수

김 정 환 2022. 9. 4. 17:05
반응형

자바에서 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