728x90

 

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();

 

728x90
반응형

+ Recent posts