Dandy Now!
  • [Java] Wrapper 클래스를 사용하는 이유와 실제 예제
    2025년 06월 15일 18시 34분 58초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    자바 Wrapper 클래스를 사용하는 이유와 실제 예제

    자바에서 Wrapper 클래스는 기본 데이터 타입(primitive data type)을 객체 형태로 다루기 위해 사용한다. 이는 여러 상황에서 유용하며, 특히 제네릭(Generics)이나 컬렉션(Collection) 프레임워크와 함께 사용될 때 그 필요성이 더욱 부각된다.

    1. Wrapper 클래스 사용의 주요 이유

    1. 기본 타입을 객체로 다룰 필요가 있을 때:
      • 자바의 많은 프레임워크나 API는 객체를 기반으로 동작한다. 예를 들어, java.util 패키지의 컬렉션(List, Set, Map 등)은 객체만을 저장한다. 따라서 int, double과 같은 기본 타입을 컬렉션에 저장하려면 해당 기본 타입의 Wrapper 클래스(Integer, Double 등)를 사용해야 한다.
    2. null 값을 표현해야 할 때:
      • 기본 타입은 null 값을 가질 수 없다. 하지만 Wrapper 클래스는 객체이므로 null 값을 가질 수 있다. 이는 데이터베이스에서 가져온 값이 없거나, 어떤 값이 선택 사항인 경우 null로 표현할 때 유용하다.
    3. 메소드에서 객체로 전달해야 할 때:
      • 메소드의 매개변수가 객체 타입만을 허용하는 경우, 기본 타입을 Wrapper 클래스로 변환하여 전달해야 한다.
    4. 특정 상수나 유틸리티 메소드를 사용할 때:
      • Wrapper 클래스는 해당 기본 타입과 관련된 다양한 상수(예: Integer.MAX_VALUE, Double.POSITIVE_INFINITY)나 유틸리티 메소드(예: Integer.parseInt(), Double.toString())를 제공한다.

    2. 실제 예제

    다음은 Wrapper 클래스를 사용하는 간단한 실제 예제이다.

    import java.util.ArrayList;
    import java.util.List;
    
    public class WrapperClassExample {
    
        public static void main(String[] args) {
            // 1. 컬렉션에 기본 타입 값 저장 (Auto-boxing 활용)
            // ArrayList는 객체만을 저장할 수 있으므로, int는 자동으로 Integer로 변환된다.
            List<Integer> numbers = new ArrayList<>();
            numbers.add(10); // int -> Integer (Auto-boxing)
            numbers.add(20);
            numbers.add(30);
    
            System.out.println("컬렉션에 저장된 숫자들:");
            for (Integer num : numbers) {
                System.out.println(num); // Integer -> int (Auto-unboxing)
            }
    
            System.out.println();
    
            // 2. null 값 처리
            // Integer는 null 값을 가질 수 있다.
            Integer optionalValue = null;
            if (optionalValue == null) {
                System.out.println("선택적 값은 현재 설정되지 않았다.");
            } else {
                System.out.println("선택적 값: " + optionalValue);
            }
    
            // 특정 조건에 따라 값을 할당
            boolean hasValue = true;
            if (hasValue) {
                optionalValue = 100;
            }
            System.out.println("변경된 선택적 값: " + optionalValue);
    
            System.out.println();
    
            // 3. 문자열을 숫자로 변환 (Wrapper 클래스의 유틸리티 메소드 활용)
            String strNum = "12345";
            int parsedNum = Integer.parseInt(strNum); // 문자열을 int로 변환
            System.out.println("문자열을 파싱한 숫자: " + parsedNum);
    
            // Double 클래스 예제
            String strDouble = "3.14";
            double parsedDouble = Double.parseDouble(strDouble);
            System.out.println("문자열을 파싱한 실수: " + parsedDouble);
        }
    }

    이 예제에서 볼 수 있듯이, Wrapper 클래스는 자바의 객체 지향적 특성을 유지하면서 기본 타입을 유연하게 다룰 수 있도록 돕는다. 특히 자바 5부터 도입된 오토박싱(Auto-boxing)과 오토언박싱(Auto-unboxing) 기능 덕분에 기본 타입과 Wrapper 클래스 간의 변환이 자동으로 이루어져 코드 작성이 더욱 편리해졌다.

    728x90
    반응형
    댓글