⭐래퍼 클래스
wrapper class
기본 자료형(Primitive Type)을 객체로 다루기 위해서 사용하는 클래스
👍 기본 자료형을 객체로 감싼다(Boxing)고 생각하면 된다.
프로그래밍을 하다 보면
기본 타입 데이터를
객체로 표현해야 할 때가 있다.
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
⭐박싱
Boxing
기본 > 래퍼
기본 데이터를 래퍼 클래스 객체로 변환하는 과정
⭐언박싱
Unboxing
래퍼 > 기본
래퍼 클래스 객체를 기본 타입 데이터로 변환하는 과정
이들은 많이 사용되기에 자바 5부터 간소화 기능이 마련돼있다.
자동박싱
Auto-boxing
자동언박싱
Auto-unboxing
래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다.
컬렉션에는 객체만 저장할 수 있기 때문이다.
이에 래퍼클래스 사용이 강제된다.
주의사항
래퍼클래스는 객체이므로 기본타입보다 메모리 사용량이 많다.
가능하다면 기본 타입 사용이 권장된다.
또한 래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다.
예외처리코드를 작성해주는 것이 좋다.
예문)
박싱, 언박싱, 자동박싱, 자동언박싱 방법 연습
package _wrapper;
public class WrapperTest1 {
public static void main(String[] args) {
//박싱
int num = 10;
Integer wrapperedNum = Integer.valueOf(num);
System.out.println(wrapperedNum); // 10
System.out.println(wrapperedNum.toString()); // toString 자동호출
//언박싱
Integer wrapperdNum2 = Integer.valueOf(30);
int num2 = wrapperdNum2.intValue();
System.out.println(num2);
//자동박싱 - 기본 데이터 값이 래퍼 클래스 객체에 바로 들어간다.
Integer autoBoxed = 20;
//자동언박싱
int autoUnboxed = autoBoxed;
}//main
}//class
예문2)
실수형 데이터에 박싱, 언박싱 연습
package _wrapper;
public class WrapperTest2 {
public static void main(String[] args) {
//double 데이터 타입을 래퍼 클래스로 변환
double doubles = 1.234;
Double doubleWrap = Double.valueOf(doubles);
System.out.println("박싱:"+doubleWrap);
System.out.println("박싱:"+doubleWrap.toString());
Double doubleWrap2 = Double.valueOf(4.321);
double doubles2 = doubleWrap2.doubleValue();
System.out.println("언박싱:"+doubles2);
System.out.println("===== ===== ");
//자동 박싱 언박싱 예제코드
Double doubleWrap3 = 3.333;
System.out.println("자동박싱:"+doubleWrap3);
double doubles3 = doubleWrap3;
System.out.println("자동언박싱:"+doubles3);
}//main
}//class
예문3)
정수형, 실수형, 논리형 등 여러 자료형에 박싱, 언박싱 연습
package _wrapper;
/**
5.12
래퍼 클래스의 활용
String => 기본데이터
래퍼클래스를 활용할때 NumberFormatException이 발생할 수 있다.
예외처리코드를 작성해주는 것이 좋다.
*/
public class WrapperTest3 {
public static void main(String[] args) {
//String => 기본데이터
String strNum = "123";
String strDouble = "45.67";
String strBool = "true";
String badStr = "a123";
int num = Integer.parseInt(strNum);
System.out.println(num); //123
double dNum = Double.parseDouble(strDouble);
System.out.println(dNum); //45.67
boolean bool = Boolean.parseBoolean(strBool);
System.out.println(bool); //true
//a123 => int 변환
try {
int intNum = Integer.parseInt(badStr);
} catch (NumberFormatException e) {
System.out.println(badStr + "변수를 정수값으로 변경할 수 없습니다.");
}
//가능하다면 예외처리코드를 작성해주는 것이 좋다.
}//main
}//class
예문4)
래퍼클래스를 활용해 String 클래스와 여러 자료형 사이 형변환을 해봤다.
package _wrapper;
/**
5.12
기본데이터 타입을 문자열로 바꿔본다.
int double boolean => String
*/
public class WrapperTest4 {
public static void main(String[] args) {
//가장 쉬운 방법
System.out.println(10 + "asdf");
String str1 = 10 + "asdf";
System.out.println(str1);
//String 클래스의 valueOf()
int value = 5000;
String strValue = String.valueOf(value);
System.out.println("int => String:"+strValue); //5000
Float value2 = 1.234F; //접미사
Long value3 = 1000L;
String strValue2 = String.valueOf(value2);
System.out.println("Float => String:"+strValue2); //1.234
String strValue3 = String.valueOf(value3);
System.out.println("Long => String:"+strValue3); //1000
}//main
}//class
예문5)
컬렉션 프레임워크에서 래퍼클래스 사용해보기
package _wrapper;
import java.util.ArrayList;
/**
5.12
컬렉션 프레임워크에서
래퍼 클래스 사용해보기
래퍼클래스는 컬렉션 프레임워크에서 많이 사용된다.
컬렉션에는 객체만 저장할 수 있다.
래퍼클래스 사용이 강제된다.
Integer Double Boolean
*/
public class WrapperTest5 {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>(); //정수값만
numbers.add(Integer.valueOf(10));
numbers.add(20); //자동박싱 (int > Integer)
int sum = numbers.get(0) + numbers.get(1); //자동언박싱 (Integer > int)
System.out.println("합:" + sum);
}//main
}//class
'Java' 카테고리의 다른 글
Java.time, 시간과 관련된 클래스들의 모음 (0) | 2025.05.14 |
---|---|
JDBC, java에서 db에 접근해 select 날려보기 (0) | 2025.05.14 |
JDBC, 자바와 SQL 징검다리 (0) | 2025.05.12 |
[인텔리제이] lombok, JDBC 라이브러리 추가 방법 (0) | 2025.05.12 |
제네릭 Generic 프로그래밍, 유연한 데이터타입 적용 (0) | 2025.05.08 |