Java 정리

참조형과 기본형

으엉어엉 2025. 3. 23. 13:37
728x90

변수(variable)란 데이터를 저장하기 위해 프로그램이 이름을 부여한 메모리 공간을 의미합니다.
그리고 자바에서의 데이터 타입(data type) 또는 자료형이란, 변수에 어떤 종류의 데이터를 저장할 수 있는지, 그 데이터가 메모리에 어떻게 저장되며 프로그램에서 어떻게 처리되어야 하는지를 명시하는 키워드입니다.

 

기본형(Primitive Type): 실제 연산을 수행하기 위해 값 자체를 저장하는 데이터 타입입니다.

참조형(Reference Type): 객체의 주소를 저장하는 데이터 타입으로, null 또는 객체가 저장된 메모리의 주소값(예: 4바이트 크기의 0x00000000 ~ 0xffffffff 범위)을 가집니다.

 

기본형 타입

 

기본형 타입(Primitive Type)의 특징은 다음과 같습니다.

  • 모두 소문자로 시작합니다.
  • 객체가 아니기 때문에 null 값을 가질 수 없고, 각 타입별로 **기본값(default value)**이 정해져 있습니다.
  • 변수를 선언함과 동시에 메모리가 할당됩니다.
  • 모든 기본형 값은 메모리의 스택(Stack) 영역에 저장됩니다.
  • 실제 데이터 값이 저장공간에 직접 저장됩니다.

 

왜 기본형은 null이 안 될까?

기본형은 실제 값을 메모리에 직접 저장하는 타입입니다. 

int a = 0; // 정수 0이 스택 메모리에 직접 저장됨
 

이런 경우 a는 값 자체를 담는 변수이기 때문에, "값이 없다(null)"라는 개념이 성립하지 않아요. null은 객체의 주소가 없다는 뜻이므로, 객체를 가리키는 참조형 타입에만 적용됩니다.

 

 

만약 기본형에 null을 할당하고 싶다면?

자바는 기본형의 null 버전을 지원하기 위해 Wrapper 클래스를 제공합니다.

 

Integer a = null; // 가능! (참조형이니까)
int b = null;     // ❌ 오류 발생!

 

참조형 타입

 

참조형 타입(Reference Type)은 간단히 말해, 자바의 8가지 기본형(primitive type)을 제외한 모든 타입을 의미합니다.
자바에서 기본적으로 제공하는 클래스, 프로그래머가 직접 정의한 클래스, 배열, 열거(enum) 타입 등이 모두 참조형 타입에 해당합니다.

참조형 타입(Reference Type)의 특징은 다음과 같습니다.

  • 기본형과 달리, 값 자체가 아닌 해당 값이 저장된 메모리의 주소를 저장합니다.
  • 즉, 실제 데이터는 별도의 메모리 공간에 존재하고, 변수는 그 주소값을 참조하여 데이터를 사용합니다.
  • 실제 값은 힙(Heap) 메모리에 저장되며, 이를 참조하는 변수는 스택(Stack) 메모리에 저장됩니다.
  • 참조형 변수는 null로 초기화할 수 있습니다. (아무 객체도 참조하지 않는 상태)

 

 

728x90

'Java 정리' 카테고리의 다른 글

접근 제한자  (0) 2025.03.26
Object Class  (0) 2025.03.24
리플렉션  (1) 2024.12.27
채팅 프로그램  (0) 2024.12.25
Logger  (0) 2024.11.22