# 질의 응답 상황
[면접관]
| 지원자님 Java를 주로 사용하셨는데, primitive type, reference type에 대해서 간략하게 설명하세요 |
[막개발자]
| primitive type은 기본형 타입으로 논리형(boolean), 숫자형(정수, 실수), 문자형(char) 데이터 타입이 있고, 실제 값을 저장하기 때문에 STACK 영역에 저장됩니다. reference type은 참조형 타입으로 기본형 타입 외에 배열이나 클래스(String), 인터페이스가 그 대상이며, 값이 저장되어 있는 주소값을 저장하기 때문에 HEAP 영역에 저장됩니다. |
# 상세 설명

자바에서 기본형(Primitive Type)과 참조형(Reference Type)
자바에서는 데이터 타입을 크게 두 가지로 나눌 수 있습니다: **기본형(Primitive Type)**과 참조형(Reference Type). 이 두 타입은 메모리 할당 방식, 성능, 사용 용도 등이 다르기 때문에 이해하는 것이 중요합니다.
1. 기본형 (Primitive Type)
기본형은 자바에서 제공하는 기본적인 데이터 타입입니다. 기본형은 값을 직접 저장하는 변수입니다. 즉, 변수에 저장된 값 자체가 데이터입니다.
기본형의 특징
- 값을 직접 저장: 변수 자체에 데이터 값이 저장됩니다.
- 메모리 크기 고정: 각 기본형은 고정된 크기의 메모리를 사용합니다.
- 값 비교: 두 기본형 값은 값 자체로 비교됩니다.
- 빠른 처리 속도: 기본형은 값이 직접 저장되므로 메모리 관리가 간단하고 빠르게 처리됩니다.
자바에서 제공하는 기본형 타입 자바에서 제공하는 기본형은 8가지가 있습니다:
- byte: 1바이트 크기, -128 ~ 127 범위
- short: 2바이트 크기, -32,768 ~ 32,767 범위
- int: 4바이트 크기, -2^31 ~ 2^31-1 범위
- long: 8바이트 크기, -2^63 ~ 2^63-1 범위
- float: 4바이트 크기, 부동소수점 숫자
- double: 8바이트 크기, 부동소수점 숫자 (float보다 더 높은 정확도)
- char: 2바이트 크기, 유니코드 문자 (0~65535 범위)
- boolean: 1비트 크기, true 또는 false 값
2. 참조형 (Reference Type)
참조형은 객체나 배열과 같은 복합적인 데이터 구조를 나타내는 타입입니다. 참조형 변수는 값을 저장하는 것이 아니라, 값이 저장된 메모리 주소를 참조합니다. 즉, 변수는 객체나 배열이 저장된 메모리 위치(주소)를 가리킵니다.
참조형의 특징
- 값을 직접 저장하지 않음: 참조형 변수는 객체나 배열이 저장된 메모리 주소를 저장합니다.
- 메모리 크기 가변: 참조형 변수는 객체나 배열이 저장되는 크기와 메모리 구조에 따라 크기가 달라질 수 있습니다.
- 값 비교: 참조형 변수는 객체나 배열을 가리키는 주소를 비교합니다. 즉, 두 참조형 변수는 객체가 동일한지 비교할 수 있으며, 같은 객체를 가리키는지 여부를 비교합니다.
- 복잡한 데이터 구조: 객체나 배열을 통해 복잡한 데이터 구조를 다룰 수 있습니다.
참조형과 기본형 비교
- 메모리 차이: 기본형은 값을 직접 저장하는 반면, 참조형은 객체나 배열이 저장된 메모리 주소를 저장합니다.
- 성능 차이: 기본형은 메모리 접근이 빠르고, 참조형은 객체나 배열을 참조하므로 메모리 사용과 접근이 상대적으로 더 복잡하고 느릴 수 있습니다.
- 기본형 변수의 복사: 기본형 변수를 다른 변수에 할당하면, 실제 값이 복사됩니다.
- 참조형 변수의 복사: 참조형 변수를 다른 변수에 할당하면, 객체나 배열을 가리키는 메모리 주소가 복사됩니다. 즉, 두 변수는 동일한 객체나 배열을 참조하게 됩니다.
결론
**기본형 (Primitive Type)**은 값 자체를 저장하며, 속도와 성능 면에서 유리합니다. 자주 사용되는 기본 데이터 타입입니다.
**참조형 (Reference Type)**은 객체나 배열이 저장된 메모리 주소를 저장하며, 복잡한 데이터 구조를 처리할 수 있습니다. 객체의 상태나 배열의 내용을 변경하는 데 유용하지만, 메모리 접근이 기본형보다 상대적으로 느릴 수 있습니다.
이 둘의 차이를 이해하고 적절히 사용하는 것이 자바 프로그램을 작성하는 데 중요한 요소입니다.
'[이직 면접] 질의 응답' 카테고리의 다른 글
| [Web 개발 기본] Proxy Pattern에 대해서 설명 하세요. (0) | 2020.12.06 |
|---|---|
| [Java] 객체와 class에 대해서 설명하세요. (0) | 2020.12.06 |
| [자료구조] 페이지교체 알고리즘에 대해서 설명하세요. (0) | 2020.12.06 |
| [Java] 탐색 알고리즘에 대해서 설명하세요. (0) | 2020.12.06 |
| [Java] String / Stringbuffer / StringBuilder에 대해서 설명하세요. (0) | 2020.12.04 |