본문 바로가기

백엔드 기술/Java

Java 데이터 타입의 기본형 & 참조형 타입

변수(variable)
데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간

Java의 데이터 타입
변수에 할당할 데이터가 메모리에 어떻게 저장되고,
프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 키워드


A. 기본형 변수 (primitive variable)
값을 저장할 때, 데이터의 실제 값이 저장되는 8가지의 데이터 타입.
즉 입력되는 실제 값은 스택 영역에 있다.

기본형 변수는 크게 논리형, 문자형, 정수형, 실수형 4가지로 나뉜다.

  타입 할당되는 메모리 크기 기본 값 데이터의 표현 범위
논리형 boolean 1 byte false true, false
정수형 byte 1 byte 0 -128 ~ 127
short 2 byte 0 - 32,768 ~ 32,767
int (기본) 4 byte 0 -2,147,483,648 (-21억) ~ 2,147,483,647(21억)
long 8 byte 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 byte 0.0F 1.4E-45 ~ 3.4028235E38
double 8 byte 0.0 4.9E ~ 1.7976931348623157E308
문자형 char 2 byte (유니 코드) '\u0000' 0 ~ 65,535


[특징]
1. 모두 소문자로 시작된다.
2. 비객체 타입이므로 null 값을 가질 수 없다.
3. 변수의 선언과 동시에 메모리 생성
4. 모든 값 타입은 메모리의 JVM - Runtime Data Area의 Stack 메모리 영역에 저장된다.
** JVM 영역은 JVM 포스팅 참고 : https://dvdhan.tistory.com/163

 

JVM (Java Virtual Machine) ?

JVM (Java Virtual Machine) 1. 자바 프로그램이 어떠한 운영체제 상에서도 실행될 수 있도록 하는 도구. 2. Java 프로그램 런타임시 메모리를 관리하고 최적화 하는 것. [JVM 구성 요소] #Compiler (컴파일러)

dvdhan.tistory.com

5. 변수에 할당되는 데이터의 실제 값이 저장된다.

 

 

B. 참조형 변수 (reference variable)
A의 8가지 기본형 변수 타입을 제외한 모든 데이터 타입이 해당.
기본 클래스, 개발자가 만든 클래스, 배열, 열거 타입 등 모두 참조형이라고 한다.

타입 기본값 할당되는 메모리 크기
배열 (Array) Null 4 byte ( 객체의 주소값을 저장하므로 )
열거 (Enumeration)
클래스 (Class)
인터페이스 (Interface)


[특징]
1. 참조형 변수는 null 값을 가질 수 있다.
2. 기본형과는 달리 실제 값이 저장되지 않고,
실제 값이 저장된 참조 변수가 저장된 힙 메모리 공간의 주소를 저장.
즉, 입력되는 실제 값은 힙 영역에 있고, 그 주소 값을 갖는 참조 변수는 스택 영역에 보관.

 

[기본형 변수와 참조형 변수의 저장 공간 차이]

[기본형 변수]
스택 영역에 보관

[참조형 변수]
스택 영역, 힙 영역에 보관
스택 영역 : 실제 값을 보관하고 있는 참조 변수의 힙 메모리 공간 속의 주소 값.
힙 영역 : 참조 변수에 입력되는 실제 값