반응형

 

 

아ㅏㅏㅏㅏ안녕!!

즐거운(?) 월요일이 되었군

 

오늘은 자바를 시작해야게써!

일단은 뭐 그렇다는 건데

이 내용은 기존에 알고있는

기본형 타입과 연관되는 친구야

 

https://kecoz.tistory.com/69?category=841308

 

[Java] 기본형 타입! 과! 리터럴에 대해서 알아보자꾸나

안녕 안녕! 오늘은 말이말이야 요즘들어 졸리고 피곤하고 그런데 잠은 안오고 아주 신나 죽겠지 뭐야! 그래서 끄적끄적 준비한건...? 기본형 타입이야! 이 친구는 뭐랄까.. 지금 먹으면 배부르고... 나중에 먹자..

kecoz.tistory.com

만약 기본형 타입에 대해서 모른다면

이 글을 참고하길 바라!

 

그럼 시작쓰를 해볼게!


래퍼클래스 = 객체를 이용한

기본형타입 = 변수를 이용한

 

이렇게 보면 편할것 같아.

 

일반적으로 Java는 기본형 타입을 객체로 사용해야하는 경우가

종종 발생하기도 하거든?

즉, 일반형 타입으로 모든걸 처리할 수가 없기 때문이야

 

근데 이 과정이 참으로 복잡하게 느껴질 수도 있어

 

예를 들어서 설명해보자면

내가 인터넷에서 고기를 시켰단 말이야 ?

근데 이게 정육점에서 고기산듯이 봉투로

툭... 하고 배송이 되진 않을거아냐?

 

이렇게 오면 뚜껑열릴듯

 

아이스박스에 아이스팩을 넣고

고기를 포장하여 박스가 테이핑이되어서

신선도를 유지한체 온단 말이지?

 

그리고 우리가 택배를 받고서는 

아이스박스에 밀봉된 테이프를 떼고서

신선한 고기를 꺼내겠지?

 

정리하면

고기 -> 아이스박스 

아이스박스 ->고기

 

이런과정이 이루어지게 되는거야

고기를 아이스박스에 넣어도

그게 고기라는건 알고있지

 

Java적인 측면으로 봤을때

 

고기라는 기본 자료형을 아이스박스라는 객체에 포장하는 과정을

Boxing이라고 하고

 

택배를 받고서 우리는

아이스박스라는 객체에서 고기라는 변수를 꺼내는걸 

UnBoxing 이라고해 

 

 


Boxing 하는코드를 써볼까 ?

 

package project;
public class Boxing {
    public static void main(String[] args) {
        //기본타입 변수 int a = 30;
        int a = 30;
        // integer 객체 b 로 boxing
        Integer b = new Integer(a);
        
        System.out.println(Integer.class.isInstance(a));
        System.out.println(b.getClass().getName());
        
    }
}

 

결과 

 

아주 자~알 됐지?

 

a= int인거구

b = Integer로 Boxing된 객체임이 확인이 됐어!

 


Unboxing 코드

 

package project;
public class UnBoxing {
    public static void main(String[] args) {
        //기본타입 변수 int a = 30;
        int a = 30;
        // integer 객체 b 로 boxing
        Integer b = new Integer(a);
        // 변수 int c에 Integer 객체 b 메소드 intValue로 UnBoxing
        int c = b.intValue();
        
        System.out.println(Integer.class.isInstance(a));
        System.out.println(b.getClass().getName());
        System.out.println(Integer.class.isInstance(c));
    }
}

 

UnBoxing의 경우는 선언해서 넣어주는게 아니라

intValue라는 메소드를 통해서 변경을 해주었어

 

결과

 

박싱 -> 언박싱이 잘 되었지!

 

솔직히.. 이걸 만들면서

흠.. PHP의 var_dump나 print_f 가 참으로 좋은거여따리...

하고 한참을 생각했오


이렇게 Boxing과 UnBoxing을 봤는데

 

어떤 기본타입이 어떠한 래퍼 클래스로 변경이 가능한지 보여줄게

 

 

 

이렇게 나열을 해봤는데

 

기본형 타입 -> 래퍼클래스 (Boxing)

래퍼클래스 -> 기본형 타입 (UnBoxing)

이건 절대로 잊으면 안되는거야!!

 


위에서 보면 UnBoxing할때,

intValue() 라는 메소드를 써줬는데

UnBoxing 하는 메소드가 뭐가 있는지 볼까?

 

 

 

보면 알다시피 이건

어떤 박스일때는 이런 식으로 포장을 뜯을 수 있어!

라고 정리되어있는거야

 

옷같은 섬유나 포장제품은 ( 칼 사용금지!)

유리나 그릇같은 택배는 ( 던지지마시오! 취급주의)

 

이런 개념인거지

 


우리는 이렇게 기운빠지게

쭉 달려왔는데 미안하지만

JDK 1.5부터는

AUTO 기능을 지원해.. 헤헤..

AutoBoxing

AutoUnBoxing

 

자동으로 된다는거지...히히

 

그래도 원리에 대해서 아는건 참 좋은거야!

 

어떻게 하는건지 슥.. 보여줄게!

 

package project;

public class Main {
    public static void main(String[] args) {
       
        // jdk 1.5 이전의 Boxing , UnBoxing
        int a = 30;
        Integer b = new Integer(a);
        int c = b.intValue();
        
        
        // jdk 1.5 이후의 Boxing , UnBoxing
        int x = 30;
        Integer y = x;
        int z = y;
        
        System.out.println(Integer.class.isInstance(a));
        System.out.println(b.getClass().getName());
        System.out.println(Integer.class.isInstance(c));
        
        System.out.println("=================");
        
        System.out.println(Integer.class.isInstance(x));
        System.out.println(y.getClass().getName());
        System.out.println(Integer.class.isInstance(z));
        
    }
}

 

결과

 

 

어때? 엄청 간단해졌지? : ) 

 


어쨋든.. 흠흠.. 오늘은 Wrapper Class와..!

Boxing, UnBoxing을 다루어 보았어

 

"쓸데 있겠어?"

싶겠지만 은근히 쓰이는 친구다 보니

잘 알아두어서 나쁠건 없다고봐 ㅎㅎ

그때 가서 고생할 필욘 없을거야 ㅎㅎ

 

그럼 오늘은 여기까지다 이말이야!

모두 즐거운 한주 보내길 바라!! 

그럼 20000!

반응형