[Java] 원시 타입, 참조 타입, 래퍼 클래스

minhye kim·2024년 8월 19일

Java

목록 보기
6/11

1. 원시 타입 (Primitive Types)

예시: int, char, float, boolean, byte, short, long, double

특징

  • 간단한 데이터 저장: 원시 타입은 기본적인 데이터 값을 직접 저장합니다.
  • 고정된 크기: 각 원시 타입은 고정된 메모리 크기를 차지합니다. 예를 들어, int는 항상 4바이트를 차지합니다.
  • 메모리 효율성: 원시 타입은 값 자체를 스택 메모리에 저장하기 때문에 메모리 사용이 효율적이고, 연산 속도가 빠릅니다.
  • 값 전달: 원시 타입은 값에 의한 전달(pass by value)이 이루어집니다. 즉, 함수에 전달될 때 값의 복사본이 전달되며, 원래의 값에는 영향을 주지 않습니다.

2. 참조 타입 (Reference Types)

예시: 클래스, 배열, 인터페이스, String (예: String, Integer, ArrayList)

특징

  • 객체를 참조: 참조 타입은 객체의 메모리 주소를 참조하여 데이터를 관리합니다. 즉, 실제 데이터는 힙(heap) 메모리에 저장되고, 변수는 이 데이터를 가리키는 주소를 가지고 있습니다.
  • 유연성: 참조 타입은 다양한 데이터 구조와 복잡한 객체를 저장할 수 있습니다. 예를 들어, 배열이나 클래스 객체는 모두 참조 타입에 속합니다.
  • 값 전달: 참조 타입은 참조에 의한 전달(pass by reference)을 사용합니다. 즉, 함수에 객체의 참조 주소가 전달되며, 이를 통해 객체의 원래 데이터를 수정할 수 있습니다.
  • 동적 할당: 참조 타입은 동적으로 메모리를 할당하며, 크기를 필요에 따라 조정할 수 있습니다.

3. Wrapper 클래스 (Wrapper Classes)

예시: Integer, Character, Float, Boolean, Double, Byte, Short, Long

특징

  • 기본 타입의 객체화: Wrapper 클래스는 기본 데이터 타입을 객체로 감싸는 클래스입니다. 이를 통해 기본 타입을 객체로 다룰 수 있습니다.
  • Java 컬렉션과의 호환성:
    Wrapper 클래스는 Java의 컬렉션 프레임워크와 같이 객체를 필요로 하는 곳에서 기본 타입을 사용할 수 있도록 해줍니다. 예를 들어, ArrayList와 같이 객체 타입으로만 이루어진 컬렉션에 기본 타입을 넣을 수 있습니다.
  • 유틸리티 메서드: Wrapper 클래스는 기본 데이터 타입이 제공하지 않는 다양한 메서드를 제공합니다. 예를 들어, Integer.parseInt("123")는 문자열을 정수로 변환하는 메서드입니다.
  • 자동 박싱/언박싱: Java는 기본 타입과 Wrapper 클래스 간의 자동 변환(Autoboxing/Unboxing)을 지원합니다. 예를 들어, int 값을 Integer로 자동 변환하거나, Integer 객체를 int로 자동 변환할 수 있습니다.

주요 차이점 요약

특징원시 타입 (Primitive Types)참조 타입 (Reference Types)Wrapper 클래스 (Wrapper Classes)
저장 방식값 자체를 저장객체의 참조(메모리 주소)를 저장기본 타입을 객체로 감쌈
메모리 사용고정된 크기, 메모리 효율적동적 메모리 할당, 더 많은 메모리 사용동적 메모리 할당, 추가적인 오버헤드
값 전달 방식값에 의한 전달 (Pass by Value)참조에 의한 전달 (Pass by Reference)참조에 의한 전달 (Pass by Reference)
타입의 본질기본 데이터 타입 (Primitive Type)객체, 클래스, 배열, 인터페이스 등기본 타입의 객체화(Reference Type)
예시int, char, booleanString, Array, Class""Integer, Character, Boolean
유연성고정적, 제한적유연하고 확장 가능기본 타입과 컬렉션 등 객체 기반 사용에 유연
사용 목적간단한 데이터 연산, 성능 중시복잡한 데이터 구조 및 객체 지향 프로그래밍기본 타입을 객체로 다루기, 컬렉션 사용
profile
안녕하세요. 블로그를 시작하게 되었습니다! 앞으로 유용한 정보와 좋은 내용을 많이 공유할게요:)

0개의 댓글