Wrapper class(래퍼 클래스)
기본자료형을 클래스화 시킨 것
기본자료형을 객체화 해주는 클래스
기본형 데이터타입을 클래스화하면 Object 클래스의 자식 클래스가 되며,
데이터타입에 상관없이 Object클래스를 이용한 처리가 가능해진다
Wrapper class 출현 배경
기본 자료형들은 ‘자료형’으로만 사용, 메소드 사용불가. 그래서 래퍼클래스가 나오게됨
*기본자료형 8가지
boolean char byte int short long float double
Wrapper 래퍼클래스는 참조 자료형
클래스 자체가 자료형으로 사용가능하기에 래퍼클래스도 자료형으로도 사용 가능하고, 그 안에 메소드도 활용가능
기본 자료형(primitive)
- 자료형 사용 o, 메소드 사용x
참조 자료형(non-primitive, reference type)
(Wrapper Class = 참조형)
- 자료형 사용 o, 메소드 사용 o
기본 자료형 | Wrapper Class |
boolean | Boolean |
char | Character |
byte | Byte |
int | Integer |
short | Short |
long | Long |
float | Float |
double | Double |
boxing vs unBoxing
기본자료형 vs Wrapper클래스
- boxing : 기본자료형 → wrapper클래스로 변환(객체화)
- unBoxing : wrapper클래스 → 기본자료형으로 변환
- 객체에 저장되어 있는 데이터를 기본형 데이터로 꺼내는 작업
Wrapper클래스가 박스
안에 메소드,필드 등 담아두기에 박스
반대로 박스(객체)에 저장되어 있는 데이터를 기본형 데이터로 꺼내는 작업이 언박싱
// boxing
int num1 = 10;
Integer integer1 = new Integer(**num1**); // num1 자체를 래퍼클래스로 전환 -> boxing
// unBoxing
int num2 = integer1.**intValue();** // num2 : 래퍼클래스를 기본자료형 int로 변환 -> unBoxing
// boxing
int i = 10;
Integer iValue1 = new Integer(i);
Integer iValue2 = new Integer(123);
double d = 1.123;
Double dValue1 = new Double(d);
Double dValue2 = new Double(5.323);
// unBoxing
Integer iValue = new Integer(4578);
int i = iValue.intValue();
Double dValue = new Double(44.241);
double d = dValue.doubleValue();
autoBoxing, autoUnBoxing
JDK1.5버젼부터 지원
자동으로 박싱,언박싱
기본 타입과 Wrapper클래스 타입 간의 변환이 자동으로 이루어진다
(바로 대입적용이 가능케됨)
// 자동박싱,언박싱. 바로 대입적용이 가능케됨
Integer integer2 = num1; // autoBoxing
int num3 = integer2; // autoUnBoxing
int i = 10;
Integer iValue = i; // 바로 대입 가능
Double dValue = new Double(3.14);
double d = dValue; // 바로 대입 가능
1)String을 기본 자료형으로 바꾸기
parsing(파싱)
기본자료형에서 래퍼클래스로 변환하기 위해 많이 사용하는게 파싱(parsing)
parsing : 문자열을 기본 자료형으로 변환하는 것
변환가능한 같은 형태이여야한다
ex) 숫자면 숫자끼리. 문자열 "1"을 int 1로 변환 가능
int i = Integer.parseInt("10");
double d = Double.parseDouble("홍길동");
// 에러메시지 : java.lang.NumberFormatException: For input string: "홍길동"
// 파싱할 자료형의 형태를 지니지 않아서 나는 에러
short s = Short.parseShort("10 "); // 잦은 실수 요인 : 공백 조심
float f = Float.parseFloat(" 10");
boolean b = Boolean.parseBoolean("true");
byte by = Byte.parseByte("10");
Long l = Long.parseLong("10");
// 캐릭터 래퍼클래스에는 파싱기능 존재x -> chatAt()로 대체
byte b = Byte.parseByte("1");
short s = Short.parseShort("2");
int i = Integer.parseInt("3");
long l = Long.parseLong("4");
float f = Float.parseFloat("0.1");
double d = Double.parseDouble("0.2");
boolean bool = Boolean.parseBoolean("true");
char c = "abc".charAt(0);
2)primitive type(기본 자료형)을 String으로 바꾸기
String str1 = i + ""; // 방법1. 가장 쉬운 변환.대중적 사용
String str2 = String.valueOf(s); // 방법2
String str3 = Byte.valueOf(by).toString(); // 방법3
String b = Byte.valueOf((byte)1).toString();
String s = Short.valueOf((short)2).toString();
String i = Integer.valueOf(3).toString();
String l = Long.valueOf(4L).toString();
String f = Float.valueOf(0.1f).toString();
String d = Double.valueOf(0.2).toString();
String bool = Boolean.valueOf(true).toString();
String ch = Character.valueOf('a').toString();
'JAVA > 개념정리' 카테고리의 다른 글
[Java] For each문 (=향상된 for문, 개선된 for문) (1) | 2022.09.19 |
---|---|
[Java] Iterator & ListIterator +@Enumeration (0) | 2022.09.18 |
[Java] 자바 기본 API 1 : String Class 2 - 자주 쓰이는 메소드 (0) | 2022.08.20 |
[Java] 자바 기본 API 1 : String Class 1 (0) | 2022.08.20 |
[Java] 추상클래스(abstract) & 인터페이스(Interface) -- (0) | 2022.08.16 |