티스토리 뷰
래퍼 클래스란(Wrapper Class)
기본 타입의의 데이터를 객체로 포장해주는 클래스
프로그래밍 중 기본 타입의 데이터를 객체로 표현해야 할 때 사용된다
ex) DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용 - 객체는 null 값 처리 가능, 기본타입은 불가능
래퍼 클래스 구조도
래퍼 클래스의 부모는 Number, 최종 부모 클래스는 Object인 것을 볼 수 있다
박싱(Boxing)과 언박싱(UnBoxing)
- Boxing : 기본 타입의 값을 Wrapper 객체로 만드는 과정
- UnBoxing : Wrapper 객체에서 기본 타입의 값을 얻는 과정
자동 박싱(AutoBoxing)과 자동 언박싱(AutoUnBoxing)
Wrapper 객체에 기본 타입의 데이터가 대입될 경우 자동으로 박싱과 언박싱이 일어난다
public class Wrapper_Ex {
public static void main(String[] args) {
Integer num = 17; // 자동 박싱
int n = num; //자동 언박싱
System.out.println(n);
}
}
타입의 변환 - ValueOf()와 ParseInt()
- Integer.ValueOf(String): Wrapper 클래스를 반환하기 때문에 산술 연산이 불가능 하다
- Integrer.ParseInt(String): 기본 타입을 반환하기 때문에 산술 연산이 가능하다
String str2 = "10.5";
float f = Float.parseFloat(str2);
double d = Double.parseDouble(str2);
System.out.println("문자열 float값 변환 : "+f); // float 형 리턴
System.out.println("문자열 double값 변환 : "+d); //double 형 리턴
값 비교 - .equals()
래퍼 객체끼리 비교를 하게되면 .equals() 를 사용해야 한다. == 연산자를 사용하게 되면 래퍼 객체의 참조 주소를 비교하기때문이다.
하지만 래퍼 객체와 기본 타입을 비교한다면 컴파일러가 자동 박싱과 언박싱을 수행하므로 ==연산자와 .equals() 둘다 사용이 가능하다.
Integer num = new Integer(10); //래퍼 클래스1
Integer num2 = new Integer(10); //래퍼 클래스2
int i = 10; //기본타입
System.out.println("래퍼클래스 == 기본타입 : "+(num == i)); //true
System.out.println("래퍼클래스.equals(기본타입) : "+num.equals(i)); //true
System.out.println("래퍼클래스 == 래퍼클래스 : "+(num == num2)); //false
System.out.println("래퍼클래스.equals(래퍼클래스) : "+num.equals(num2)); //true
'Java' 카테고리의 다른 글
[JAVA] - OOP(Object Oriented Programming)에 대하여 (0) | 2021.02.17 |
---|---|
[Java] - 자바의 자료구조(1) (0) | 2020.11.27 |
[Java] - Comparable 과 Comparator (0) | 2020.11.24 |
[Java] - 자바 프로그램의 예외처리 (0) | 2020.11.16 |
[Java] - Overriding vs Overloading (0) | 2020.11.15 |