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
반응형