티스토리 뷰

Java

[Java] - Wrapper 클래스와 Boxing/UnBoxing

영지는 달리는중 2020. 11. 27. 16:58

래퍼 클래스란(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

 

참고 블로그

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함