wrapper class

  프로그램에서 사용할 데이터가 숫자형이라면 보통 byte, int, float 등의 기본타입을 사용한다. 그런데 이러한 기본 타입의 값을 객체로 변환해서 사용해야 하는 경우가 발생하는데, 자바는 이를 위해 래퍼(wrapper)클래스를 제공한다. 

(jdk 1.5 이후부터는 개발자가 래퍼 클래스를 이용하지 않더라도 컴파일러가 기본값을 래퍼 클래스로 변환해준다.)


기본 타입 

래퍼 클래스 

boolean 

Boolean 

byte 

Byte 

char 

Character 

short 

Short 

Int 

Integer 

long 

Long 

float 

Float 

double 

Double 


  기본 타입을 객체로 변환하는 것은 파라미터 타입이 객체형인 메서드에 기본 타입 값을 아규먼트로 전달하는 경우나 MIN_VALUE, MAX_VALUE와 같이 클래스에 정의된 상수를 사용하는 경우, 문자열에서 숫자로, 숫자에서 문자열로 타입이 변환되는 경우이다.


  기본 타입을 래퍼 클래스로 변환하는 것을 boxing이라하고, 래퍼 클래스에서 기본 타입으로 변환하는 것을 unboxing이라고 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package chapter14.javaBasicClass;
 
public class WrapTest {
    //Object타입의 배열을 생성, Object는 모든 클래스의 상위 클래스이기 때문에 모든 클래스의 객체를 업캐스팅하여 배열에 저장할 수 있다.
    public Object[] arr = new Object[10];    
    public int cnt;    //배열에 저장될 데이터의 갯수를 카운트할 변수
 
    public void add(Object obj) {    //arr배열에 Object객체를 추가한다.
        arr[cnt++= obj;
    }
 
    public void print() {    //arr배열에 저장된 데이터를 출력한다.
        int i;
        for (i = 0; i < cnt; i++) {
            Object o = arr[i];    //객체를 하나씩 꺼내 객체 o에 저장하고
            if (o instanceof Integer) {    //객체가 Integer형인지 확인한뒤,
                System.out.println(((Integer) o).intValue());    //맞으면 intValue()메서드로 Integer객체를 int형 기본 타입으로 변환한다.
            }else if(o instanceof Float) {    //꺼낸 객체가 Float형이라면,
                System.out.println(((Float) o).floatValue());    //floatValue()메서드로 Float객체를 float형 기본 타입으로 변환한다.
            }
        }
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package chapter14.javaBasicClass;
 
public class WrapTest {
    //Object타입의 배열을 생성, Object는 모든 클래스의 상위 클래스이기 때문에 모든 클래스의 객체를 업캐스팅하여 배열에 저장할 수 있다.
    public Object[] arr = new Object[10];    
    public int cnt;    //배열에 저장될 데이터의 갯수를 카운트할 변수
 
    public void add(Object obj) {    //arr배열에 Object객체를 추가한다.
        arr[cnt++= obj;
    }
 
    public void print() {    //arr배열에 저장된 데이터를 출력한다.
        int i;
        for (i = 0; i < cnt; i++) {
            Object o = arr[i];    //객체를 하나씩 꺼내 객체 o에 저장하고
            if (o instanceof Integer) {    //객체가 Integer형인지 확인한뒤,
                System.out.println(((Integer) o).intValue());    //맞으면 intValue()메서드로 Integer객체를 int형 기본 타입으로 변환한다.
            }else if(o instanceof Float) {    //꺼낸 객체가 Float형이라면,
                System.out.println(((Float) o).floatValue());    //floatValue()메서드로 Float객체를 float형 기본 타입으로 변환한다.
            }
        }
    }
}
cs



































참고!


<숫자형 래퍼 클래스의 주요 메서드>


메서드 

설명 

byte byteValue() 

객체의 값을 기본 타입으로 변환한다. 기본타입은 메서드 이름과 동일 

short shortValue()

int intValue() 

long longValue() 

float floatValue() 

double doubleValue() 

static int parseInt(String s) 

아규먼트로 전달된 문자열을 십진 정수로 변환.

ex) 문자열 "123"을 숫자 123으로 변환 



<Character 클래스의 주요 메서드>


메서드 

설명 

char charValue() 

기본 타입으로 변환한다. 

boolean isLetter(char ch) 

ch가 문자인지 숫자인지 판단한다. 

boolean isDigit(char ch) 

char toUpperCase(char ch) 

ch를 대문자, 소문자로 변환한다. 

char toLowerCase(char ch) 


댓글

Designed by JB FACTORY