Java 기본 자료형 vs 객체 자료형

Yunsung·2025년 7월 2일
post-thumbnail

Java를 공부하다 보면 기본 자료형(Primitive Type) 과 객체 자료형(Reference Type) 이라는 개념이 꼭 등장합니다.

기본/객체 자료형이 무엇인지, 어떻게 다르고,언제 어떤 상황에서 사용하는 것이 좋은지 복습한 내용을 정리해보겠습니다.

1. 기본 자료형 (Primitive Type)

  • 값 자체가 Stack 메모리에 직접 저장됩니다.
  • null로 설정할 수 없습니다.
  • 메서드나 필드가 없습니다.
  • == 연산자로 값 자체를 비교합니다.
  • 속도가 빠르고 메모리 사용이 적습니다.

종류

byte, short, int, long, float, double, char, boolean

예시

int a = 10;
int b = 10;
System.out.println(a == b); // true

2. 객체 자료형 (Reference Type)

  • Heap 메모리에 데이터가 저장되고,
  • Stack에는 **Heap의 참조값(주소)** 이 저장됩니다.
  • null로 설정할 수 있습니다.
  • 메서드, 필드를 사용할 수 있어 기능 활용이 가능합니다.
  • == 연산자는 주소(참조값)를 비교하며,
  • .equals() 메서드는 값을 비교합니다.
  • 크기가 유동적이며 유연한 데이터 처리에 유리합니다.

종류

String, Integer, Double, Character, Boolean, 배열, 사용자 정의 클래스 등

예시 코드

String s1 = new String("hello");
String s2 = new String("hello");

System.out.println(s1 == s2);         // false (주소 비교)
System.out.println(s1.equals(s2));    // true (값 비교)

Wrapper 클래스를 사용하여 .equals()로 비교할 수 있습니다.

Integer x = 10; // auto-boxing
Integer y = 10; // auto-boxing

System.out.println(x == y);       // true (캐싱 범위 내에서는 동일 주소)
System.out.println(x.equals(y));  // true (값 비교)

3. 표로 깔끔 비교

구분기본 자료형객체 자료형
저장 위치Stack (값)Heap (데이터) + Stack (주소)
null불가가능
메서드/필드없음사용 가능
비교 방식== 값 비교== 주소 비교, .equals() 값 비교

4. 객체 자료형, 언제 사용하면 될까요?

공부하다 보면 가장 헷갈리는 부분이 “어떤 상황에서 객체 자료형을 써야 하는가?” 입니다.

객체 자료형을 사용하는 상황

1. 메서드, 필드를 함께 사용해야 할 때

  • 길이 확인, 비교, 변환 등 기능을 써야 할 때
  • 예: String.length(), String.replace(), Integer.compareTo()

2. null 상태로 값을 표현해야 할 때

  • DB 연동 등에서 “값이 없음” 상태를 나타낼 때
  • 예: Integer age = null;

3. 컬렉션(List, Map, Set)에 담아야 할 때

  • Java 컬렉션은 객체만 담을 수 있으므로 Wrapper 클래스를 사용
  • 예: List<Integer> list = new ArrayList<>();

4. 객체 단위로 데이터를 관리할 때

  • DTO, VO, Entity 관리
  • 예: User, Product, Order

5. 기본 자료형은 언제 사용하나요?

  • 값만 빠르게 다뤄야 할 때
  • 반복문 카운트, 단순 계산, 성능이 중요한 로직 등

예시

for (int i = 0; i < 100; i++) {
    // 단순 카운트, 빠른 계산
}
profile
풀스택 개발자로서의 도전을 하는 중입니다. 많은 응원 부탁드립니다!!😁

0개의 댓글