17-1.Wrapper 클래스
기본 자료형을 위한 클래스
지금까지 정수를 사용할 때 기본형인 int를 사용했습니다. 그런데 정수를 객체형을 ㅗ사용해야 하는 경우가 있습니다. 예를 들어 매개변수가 객체거나 반환 값이 객체형인 경우입니다.
이를 위해 자바에서는 기본 자료형처럼 사용할 수 있는 크랠스를 제공합니다. 이러한 클래스를 기본 자료형을 감쌌다는 의미로 Wrapper 클래스라고 합니다. Wrapper 클래스의 종류는 아래 표와 같습니다.
기본형 | Wrapper 클래스 |
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
가장 대표적인 Integer 클래스를 통해 Wrapper 클래스의 사용법을 알아봅시다.
다른 클래스도 사용 방법이 크게 다르지 않으므로 Integer클래스를 익혀 두면 충분히 응용할 수 있습니다.
Integer 클래스 사용하기
Integer 클래스의 JavaDoc을 살펴보면 int 자료형을 감싼 클래스라고 설명되어 있습니다.
Integer 클래스의 생성자는 다음과 같이 특정 정수를 매개변수로 받는 경우와 문자열을 받는 경우 두 가지가 있습니다
Integer(int value){...} //특정 정수를 매개변수로 받는 경우
Integer(String s){...} //특정 문자열을 매개변수로 받는 경우
자바 소스파일인 Integer.java 를 살펴보면 Integer 클래스는 int 자료형의 특성이 그대로 구현되어 있습니다.
사용 가능한 최댓값과 최솟값이 static 변수로 정의되어 있습니다. 대부분의 Wrapper 클래스가 위 Integer 클래스 정의와 크게 다르지 않습니다. 또한 Integer 클래스는 멤버 변수로 기본 자료형 int를 가지고 있고, int 값을 객체로 활용할 수 있는 여러 메소드를 제공합니다. int value는 final 변수이며 한번 생성되면 변경할 수 없습니다.
Integer 클래스의 메소드
Integer 클래스 내부의 int 자료형 값을 가져오기 위해서는 intValue() 메소드를 사용합니다
Integer iValue = new Integer(100);
int myValue = iValue.intValue();
valueOf() 정적 메소드를 사용하면 생성자를 사용하지 ㅇ낳고 정수나 문자열을 바로 Integer 클래스로 반환받을 수 있습니다.
Integer number1 = Integer.valueOf("100");
Integer number2 = Integer.valueOf(100);
parseInt() 메소드를 활용하면 문자열이 어떤 숫자를 나타낼 떄, 이를테면 학번이나 개수 등이 문자열로 전달된 경우에 문자 열에서 int 값을 바로 가져와서 반환할 수도 있습니다.
int num = Integer.parseInt("100");
다른 Wrapper 클래스의 사용법도 크게 다르지 않습니다.
오토박싱과 언박싱
Wrapper 클래스 만들어진 객체를 기본형을 바꾸는것을 언박싱 다시 객체형으로 바꾸는 것을 박싱이라고함