Java/JAVA

wrapper (래퍼클래스)

Jenny_yoon 2023. 1. 5. 12:36
728x90
반응형

컬랙션은 참조값(레퍼런스 R타입)만 담을 수 있다.

즉, 일반형(P타입) int, boolean 등은 담을 수 없다는 뜻.

 

하지만! 퍼 클래스로 변환 후 저장이 가능하다.

 

 

래퍼 클래스

- 기본 자료형의 값을 멤버 변수에 저장하고, 이 값 주변으로 값을 감싸고 있는 메소드가 있다고 해서 래퍼(wrapper, 감싸다) 클래스라고 불린다. (값을 하나 포장하고 주변에 다양한 메소드를 갖게됨(예. byteValue(), shortValue() ))

- 기본 자료형의 값을 컬랙션에 저장하기 위해 사용함.

- 아래와 같이 모든 기본 자료형에 대해 그에 대응되는 래퍼 클래스가 있다.

 

기본타입 -> 래퍼 클래스명

byte       -> Byte
short      -> Short
int           -> Integer (풀네임)
long        -> Long
float        -> Float
double    -> Double
char        -> Character (풀네임)
boolean  -> Boolean

 

public class Wrapper {
	public static void main(String[] args) {
		Byte b = new Byte((byte)127); //취소선 : 생략해도 된다는 뜻 
		Byte b2 = 127; //오토박싱 (자동으로 포장해서 byte에 넣어줌) <-> 언박싱(자동으로 꺼내줌)
		
		Integer iNum  = new Integer(127);
		Integer iNum2 = 127;
		
		byte bNum = iNum2.byteValue(); //형변환이 아님!
		//byteValue()라는 메소드는 Integer에 기본적으로 있는 메소드여서 생성하지 않아도 사용가능.
		//자동으로 Integer에서 값을 꺼내서 값을 byte에게 넘겨줌.
		short sNum = iNum2.shortValue();
		float fNum = iNum2.floatValue(); //Integer인 iNum2를 Integer가 갖고있는 메소드를 통해 float로 변환 
	}
}

 

 

오토박싱

: 자동으로 포장해서 값을 넣어줌.

//오토박싱 : 형변환이 x. 기본타입이 참조타입으로 바뀜. (Integer가 int로 바뀜)
Integer b3 = 127;
Integer b4 = new Integer(127);

if(b3 == b4) { //다름 
    System.out.println("같음");
}
else {
    System.out.println("다름");
}

System.out.println(b3.equals(127)); //true
System.out.println(b3.compareTo(10)); //1 (같으면 0, 앞숫자가 크면 1, 뒷숫자가 크면 -1 반환)
System.out.println(b3.compareTo(129)); //-1

 

오토 언박싱

:  타입은 다르지만 자동으로 값만 꺼내와줌 

//오토 언박싱
int number = b3; //number는 R타입 레퍼런스지만(타입은 다르지만) int값만 뽑아서 넣어줌 
System.out.println(number);
728x90
반응형