Wrapper Class

치로·2024년 7월 24일

1. Wrapper Class란?

  • 자바는 데이터를 관리하기 위하여 기본 데이터 타입을 지원하지만, 클래스를 통해서 만들어진 객체를 통한 데이터 관리도 가능
  • 어떤 상황에서는 기본 데이터 타입의 변수를 객체 형태로 사용해야하는 경우가 있는데, 이 때 기본형 타입을 객체로 포장할 필요가 있음
  • 포장 클래스(wrapper class)는 특정 기본형 타입을 나타내는 용도로 사용

2. Wrappwe Class의 의미

  • 초창기 자바 언어는 기본 자료형의 연산보다도 Wrapper 클래스를 사용한 연산이 더 많이 이루어 졌으나,
    자바 언어가 발전함에 따라서 기본 자료형과 Wrapper 클래스 간의 연산에 차이가 없어짐
  • 최근의 자바 언어는 Wrapper 클래스와 기본 자료형을 구분하지 않고 사용하기 때문에 객체로서의 특별한 읨가 없어졌다고 볼 수 있음

3. Wrapper 클래스의 객체 만들기

  • 각각의 Wrapper 클래스의 객체는 자신과 대응되는 기본 자료형의 데이터를 파라미터로 전달 받음
    int num = 1;
    Integer wrapper = new Integer(num);

4. Wrapper 클래스 형변환

  • 기본 자료형과 Wrapper 클래스 간에는 서로 암묵적 형변환이 가능
    int num = 100;
    Integer wrapper = num;

    	Integer wrapper = new Integer(100);
    	int num = wrapper;

5. Wrapper 클래스의 static 데이터

  • 모든 Wrapper 클래스는 static 데이터 형태로 Wrapper 클래스에 대응되는 자료형에 대한 최소 값과 최대 값을 가지고 있음
    int max = Integer.MAX_VALUE;
    int min = Integer.MIN_VALUE;

6. 문자열 데이터의 형변환 - 중요

  • 1과 "1"의 차이
    : 기본 자료형과 문자열 데이터 간의 연산에서는 기본 자료형 데이터가 문자열로 변환된 후, 문자열 간의 연산으로 처리
    int a = 1;
    String b = "1";
    System.out.println(a+b); // "11" (문자열)이 출력

  • 사용자 입력값에 대한 연산
    : 모든 프로그램 플랫폼에서 사용자의 입력값은 String으로 처리된다.
    만약, 인터넷 뱅킹에서 2개의 계좌로 송금할 금액을 각각 입력하였을 때, 총 금액을 계산한다면 다음과 같이 처리
    String money1 = "5000";
    String money2 = "3000";
    String total = money1 + money2;
    /// 50003000

  • 문자열 데이터를 기본 데이터 형으로 변환함

    : Wrapper 클래스에는 기본 자료형의 모양을 띄고 있는 문자열 데이터를 실제 기본 자료형으로 변환시키는 기능이 포함되어 있음
    자바에서의 Wrapper 클래스의 가장 큰 의미는 바로 이 부분임
    String money1 = "5000";
    String money2 = "3000";

    int m1 = Integer.parseInt(money1);
    int m2 = Integer.parseInt(money2);
    
    System.out.println(m1 + m2); // 8000

에시 코드

package wrapperclass;

public class Main01 {

	public static void main(String[] args) {
		String a = "20";
		String b = "3.14";
		
		// wrapper 클래스의 가장 중요한 기능은 특정 데이터형의 모양을 하고 있는 문자열을 실제 데이터형으로 변환하는 기능
		int num_a = Integer.parseInt(a); // 중요
		float num_b = Float.parseFloat(b);
		
		System.out.println(num_a);
		System.out.println(num_b);
		System.out.println("-----");
		
		// 변환한 값은 사칙 연산이 가능
		int v1 = num_a + 500;
		float v2 = num_b + 500;
		System.out.println("v1 = " + v1);
		System.out.println("v2 = " + v2);
		
		// 기본 데이터 형의 객체화
		Integer i = new Integer(100);
		
		// 기본 데이터 형과 객체화된 데이터는 서로 연산이 가능
		int j = i + 300;
		System.out.println("j = " + j);
	}

}

0개의 댓글