잡다한 내용

Java 기본형, 참조형

yolang 2024. 12. 19. 09:24
728x90

Java의 참조형과 기본형의 차이에 대해서 궁금해서 지피티에게 물어보고 내용을 검증했다.

저번에 자바로 코드를 짰을 때 일부러 null 값을 허용하지 않기 위해서 Integer 가 아니라 int를 사용하는 것을 봤었다.

이래서 그렇군..


1. 기본형 (Primitive Type)

기본형은 값을 직접 저장하는 간단한 데이터 타입입니다. Java에는 총 8개의 기본형이 있습니다.

기본형 종류 및 기본값

데이터 타입크기기본값예시 값

byte 1 byte 0 -128 ~ 127
short 2 bytes 0 -32,768 ~ 32,767
int 4 bytes 0 -2,147,483,648 ~ 2,147,483,647
long 8 bytes 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4 bytes 0.0f 3.4028235e+38f ~ 1.4e-45f
double 8 bytes 0.0d 1.7976931348623157e+308 ~ 4.9e-324
char 2 bytes '\u0000' 'A', '1', etc. (유니코드 문자)
boolean 1 bit false true, false

기본형의 특징

  1. 메모리 할당:
    • 기본형은 스택 메모리에 할당됩니다.
    • 값이 직접 저장되므로 접근 속도가 빠릅니다.
  2. 초기화 시 기본값:
    • 클래스의 멤버 변수로 선언되면 자동으로 기본값으로 초기화됩니다.
    • 로컬 변수는 반드시 명시적으로 초기화해야 사용 가능합니다.
  3. 값 복사:
    • 기본형 변수에 값을 할당하거나 전달하면 값이 복사됩니다.

2. 참조형 (Reference Type)

참조형은 객체의 참조(주소)를 저장하는 타입입니다. 모든 객체, 배열, 문자열 등이 참조형에 해당합니다.

참조형의 예시

  • 클래스: String, Integer, ArrayList, 사용자 정의 클래스 등
  • 배열: int[], String[]
  • 인터페이스와 열거형 (enum)

참조형의 특징

  1. 메모리 할당:
    • 참조형은 힙 메모리에 객체가 할당되고, 스택 메모리에는 객체의 참조(주소)가 저장됩니다.
  2. 초기화 시 null 값:
    • 참조형 변수는 객체를 참조하지 않으면 null로 초기화됩니다.
    • null은 참조가 없음을 나타내는 특별한 값입니다.
  3. 참조 복사:
    • 참조형 변수에 값을 할당하거나 전달하면 주소가 복사됩니다.
    • 같은 객체를 여러 참조형 변수가 공유할 수 있습니다.
  4. null 참조 주의:
    • null 참조된 변수를 사용하면 **NullPointerException**이 발생합니다.

기본형 vs 참조형 비교

특징기본형 (Primitive)참조형 (Reference)

저장 방식 값 자체를 저장 객체의 주소(참조)를 저장
메모리 할당 스택 메모리 참조는 스택, 객체는 힙에 저장
초기화 시 기본값 0, false, 0.0 등 null
값 할당/전달 값이 복사됨 참조(주소)가 복사됨
null 사용 가능 여부 null 허용 안됨 null 허용
예제 타입 int, double, boolean String, int[], 사용자 정의 클래스

 

728x90