[Java] Wrapper Class
Wrapper Class는, 자바의 기본 데이터 타입을 객체로 포장해주는 클래스이다.
각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어준다.
[기본 data type의 참조 data type]
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
char : Character
boolean : Boolean
Character과 Integer을 제외하고는, 기본 데이터 타입에서 첫문자만 대문자로 쓰면 객채처럼 사용할 수 있다.
Int num = 10;
객체로 포장해주기 때문에, num에는 참조값이 들어있다. 하지만, 10이라는 기본 데이터 타입이 들어있다고 고 생각해도 무방하다.
Wrapper Class 를 사용하면, 여러 메소드들을 사용할 수 있는 장점이 있다.
예시를 통해 확인해보자.
1) MainClass01.java - Wrapper Class로 toString(), parseInt() 사용해보기
package test.main;
/*
* [기본 data type의 참조 data type]
*
* byte : Byte
* short : Short
* int : Integer
* long : Long
*
* float : Float
* double : Double
*
* char : Character
* boolean : Boolean
*/
public class MainClass01 {
public static void main(String[] args) {
int num1 = 10;
/*
* num2에는 참조값이 들어있지만
* 10이라는 기본 데이터 type이 들어 있다고 생각해도 된다.
*/
Integer num2 = 10;
//참조 데이터 type이지만 기본 데이터 type처럼 사용할 수 있다.
int result = num2+1;
int result2 = num1+num2;
Integer result3 = num1+num2;
//숫자를 문자로 바꾸기 10 => "10"
String strNum = num2.toString();
//문자를 숫자로 바꾸기
String strNum2 = "999";
int result4 = Integer.parseInt(strNum2);
}
}
num2 는 Integer형이기 때문에, 메소드를 사용할 수 있다.
toString()은, 문자열로 바꿔주는 메소드이므로, toString()을 통해 변환된 문자열의 참조값을 String strNum에 넣는다.
parseInt()는, 정수형으로 바꿔주는 메소드이므로, int result4에 저장할 수 있다.
각종 연산들은 기본 데이터 타입과 동일하게 사용할 수 있다.
2) MainClass02.java - parseDouble(), toString() 사용해보기
예제1번과 유사한 예제이다.
이번에는 Double Wrapper Class를 사용해보았다. Integer과 거의 똑같으므로 예제를 한번 읽어보면 될 것 같다.
package test.main;
public class MainClass02 {
public static void main(String[] args) {
//기본 데이터 타입 double
double num1 = 10.1;
//참조 데이터 타입 Double
Double num2 = 10.2;
//참조 데이터 타입 Double 이지만 마치 기본 데이터 타입과 같이 사용할 수 있다.
double result1 = num2+10;
double result2 = num1+num2;
Double result3 = num1+num2;
//숫자를 문자열로 바꾸기 10.1 => "10.1"
String strNum = num2.toString();
//문자열을 숫자(double)로 바꾸기 "10.3" => 10.3
double result4 = Double.parseDouble("10.3");
}
}
parseDouble로, 문자열을 double 타입으로 변환할 수 있다.
디버깅을 해보면, parseInt, toString, parseDouble등의 메소드를 사용하여 형변환을 했을 때, 힙 영역에 새로운 객체가 생성되어, 원래 참조값과는 다른 참조값을 가지는 객체가 생성됨을 확인할 수 있다.
간단히 말해, 바꾸려던 객체의 값이 바뀌는 것이 아니고, 새로운 객체가 생성되는 것이다.