yeny_lab

[JAVA] java.lang 패키지의 Wrapper 클래스 [ 포장클래스]

2020. 7. 25. 23:52·JAVA
728x90


여러가지 기본적인 java.lang 패키지의 클래스를 공부해보자.

 

ㅇObject 클래스 

ㅇSystem 클래스

ㅇClass 클래스 

ㅇStrnig 클래스

ㅇWrapper 클래스 <<요거를 보자

ㅇMath 클래스

 

 

java.lang패키지의 Wrapper 클래스를 공부해보자.

 

자바에서 기본타입 객체들을 포장 객체라고 한다. (Wrapper)

ㄴ기본타입 값을 내부에 두고 포장하기 때문!!

ㄴ기본타입 값은 외부에서 변경할 수 없다. 그 내부값을 변경하고 싶다면 '새로운 포장 객체'를 만들어야 한다.

ㄴ사용 : 컬렉션 프레임워크에서 기본 타입 값을 객체로 생성해 관리할 때! (13장에서 배운다고 한다 야호>_<)

 

 

포장 클래스는 다음과 같이 기본 타입에 대응된다.

기본 타입 포장 클래스
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double
boolean Boolean

ㅇ박싱과 언박싱 (Boxing, Unboxing)

ㄴ기본타입 값을 포장객체로 만드는 과정 ㅣ Boxing

ㄴ포장객체에서 기본타입값을 얻어내기 ㅣ Unboxing

 

기본타입(8개)의 값을 박싱하는 방법을 보자.

(간단하다. 포장클래스의 생성자 매개값으로 기본타입값or문자열 넘겨주면 된다.)

매개값에 기본타입값을 줄 경우 매개값에 문자열을 줄 경우
Byte obj = new Byte(10); Byte obj = new Byte("10");
Character obj = new Character('가'); 없음
Short obj = new Short(100); Short obj = new Short("100");
Integer obj = new Integer(1000); Integer obj = new Integer("1000");
Long obj = new Long(10000); Long obj = new Long("10000");
Float obj = new Float(2.5F); Float obj = new Float("2.5F");
Double obj = new Double(3.5); Double obj = new Double("3.5");
Boolean obj = new Boolean(true); Boolean obj = new Boolean("true");

이렇게 포장클래스 생성자를 통해 박싱하는구나아

박싱을 했다. 변수 obj가 포장 객체를 참조하고 있다!!

 

근데 생성자 이용하지 않아도... 각 포장클래스가 갖고 있는 메소드를 통해 박싱할 수 있다. 

각 포장클래스마다 가지고 있는 정적 메소드인 valueOf()를 사용하면 된다.

 

Integer obj = Integer.valueOf(1000);

Integer obj = Integer.valueOf("1000");

이로케!!

 

 

ㅡㅡㅡㅡ

이제 박싱된 포장 객체에서 다시 기본타입값을 얻어내보자. (언박싱)

짱짱 쉽다

각 포장클래스마다 가지고 있는 '기본타입이름+Value()' 메소드를 호출하면 된다.

언박싱 : 기본타입값 이름을 이용한다.
byte num = obj.byteValue();
char ch = obj.charValue();
short num = obj.shortValue();
int num = obj.intValue();
long num = obj.longValue();
float num = obj.floatValue();
double num = obj.doulbeValue();
boolean bool = obj.booleanValue();

 

<<기본타입값을 박싱하기, 언박싱하기>>

고럼 9이후에는 어떻게 쓰지?_?


ㅇ자동 박싱, 언박싱

ㄴ직접 박싱, 언박싱 안해도 '자동으로 박싱, 언박싱 일어나는 경우가 있다.

 

ㅡ자동 박싱: 포장클래스타입에 기본값이 대입될 경우.

ㄴInteger obj = 100;  //자동 박싱

 

ㅡ자동 언박싱: 기본 타입에 포장 객체가 대입되는 경우 / 연산하는 경우

ㄴInteger객체로부터 int값이 자동 언박싱 하는 예를 보자.

Integer obj = new Integer(200);

int value1 = obj;    //자동 언박싱

int value2 = obj + 100;    //자동 언박싱

 

 


문자열을 기본타입 값으로 변환

ㄴ이런 상황에도 포장클래스가 사용된다.

ㄴ앞서 계속 사용했던 parse어쩌구가 포장클래스와 연관이 있었던 것이다.

 

 


포장 값 비교

<<포장 객체 내부 값 비교할 때는 ==와 !=연산자를 사용하지 않는 것이 좋다>>

ㄴ내부 값 비교하는 게 아니라 '참조를 비교하는 연산자'이기 때문이다.

ㄴ그래서 : 언박싱해서 값을 비교해야 하는 경우가 많다.

 

아래 '타입 && 범위'에서는 ==, !=연산자로 값을 비교할 수 있지만..

타입 값 범위
boolean true, false
char \u0000 ~ \u007f
byte, short, int -128 ~ 127 (앗 byte범위만 되네)

포장객체에 어떤 범위의 어떤 값이 저장될지 잘 모르면 저 연산자를 안 쓰는 것이 좋다.

 

다음과 같은 방법이 있다.

ㅇ내부값을 언박싱해 비교하기

ㅇequals()메소드로 값 비교하기

ㄴWrapper클래스의 equals()메소드는 내부값을 비교하도록 재정의되어있다.

 

<<포장 객체 비교하기>>

 


앞서 배운것들이 Wrapper 클래스랑 연관이 있었던 거구나

728x90

'JAVA' 카테고리의 다른 글

[JAVA] java.lang 패키지의 Math 클래스  (0) 2020.07.26
[3주차] 기본미션 + 선택미션 [혼공단] [혼공자]  (0) 2020.07.26
[JAVA] java.lang 패키지의 String 클래스  (0) 2020.07.23
[JAVA] java.lang 패키지의 Class클래스  (1) 2020.07.23
[JAVA] java.lang 패키지의 System클래스  (0) 2020.07.23
'JAVA' 카테고리의 다른 글
  • [JAVA] java.lang 패키지의 Math 클래스
  • [3주차] 기본미션 + 선택미션 [혼공단] [혼공자]
  • [JAVA] java.lang 패키지의 String 클래스
  • [JAVA] java.lang 패키지의 Class클래스
히어로맛쿠키
히어로맛쿠키
  • 히어로맛쿠키
    yeny_lab
    히어로맛쿠키
  • 전체
    오늘
    어제
    • 분류 전체보기 (389)
      • 미분류글 (32)
        • ㅇ (2)
      • JAVA (84)
        • Effective Java (1)
        • Application (21)
      • 컴퓨터구조 & OS (28)
      • 자료구조 + 알고리즘 (43)
      • Database (12)
      • 컴파일러 (10)
      • 수학 (33)
        • 미분방정식 (12)
      • 데이터분석과 머신러닝 (38)
      • 기타 (59)
      • yyeeennyy (25)
  • 공지사항

    • ^o^/♡
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
히어로맛쿠키
[JAVA] java.lang 패키지의 Wrapper 클래스 [ 포장클래스]
상단으로

티스토리툴바