728x90
반응형
SMALL
Wrapper 클래스란?
- 자바의 기본 자료형 (primitive type)을 감싸는 클래스
- 기본자료형 : boolean, char, byte, short, int, long, float, double
- Wrapper : Boolean, Char, Byte, Short, Integer, Long, Float, Double
- 앞에가 대문자로 시작하면 Wrapper구나~ 로 본인은 인식
- String 처럼 Wrapper클래스는 immutable (불변성)을 가진다.
Wrapper Class 의 계층도
WHY Wrapper 클래스?
- 기본 자료형의 변수의 값을 가지는 객체를 생성해야할때 사용할 수 있다.
- EX) 자바의 메소드 혹은 ArrayList 같은 Collection 프레임워크 등 기본 자료형이 아닌 객체를 필요로 하는 경우가 있는데 이때 사용 될수 있다.
- 따라서, 기본자료형의 값을 객체처럼 사용해야할때 필요하다
박싱(Boxing) & 언박싱(UnBoxing)
- Boxing : 기본 자료형의 값을 Wrapper 객체로 만드는 과정 [EX) int -> Integer]
- UnBoxing : Wrapper 객체에서 기본 자료형의 값으로 만드는 과정 [EX) Integer -> int]
- 기본 자료형이라는 물건을 포장(Boxing)하고 포장을 푼다(UnBoxing)으로 이해했음
- 예시
public class Main {
public static void main(String[] args){
// Integer 객체 선언 밑의 세가지 방법으로 선언 가능 = Boxing
Integer i1 = new Integer(1);
//Valueof() 는 Wrapper클래스의 static 메소드
Integer i2 = Integer.valueOf(1); //new 와 같은 동작
Integer i3 = Integer.valueOf("1"); // String 값을 넣어도 가능
int i1i = i1.intValue(); // unboxing Integer -> int
// Wrapper 클래스 ==, != 를 통한 값 비교는 주소값으로 하게 된다.
Integer i4 = Integer.valueOf(123);
Integer i5 = Integer.valueOf(123);
Integer temp = new Integer(123);
System.out.println(i4 == temp); // false
System.out.println(i4 == i5); //true => 불변성
//따라서 값을 비교하고 싶다면 equals() 를 사용해야한다.
//
//AutoBoxing, AutoUnBoxing
//Java 5 부터 Wrapper클래스의 AutoBoxing, AutoUnBoxing기능을 제공하게 되었다.
Integer i6 = 110; //autoBoxing
Integer i7 = new Integer(110);
int i8 = 110;
System.out.println(i6 == i8); //true
System.out.println(i6 == i7); //false
//equals()
System.out.println(i6.equals(i7)); //true
//한쪽이 기본 자료형이면 Wrapper Class 는 auto-unboxing 진행
}
}
정리
- Wrapper 클래스는 기본자료형을 값을 객체처럼 사용해야할 때 사용한다.
- 박싱 + 언박싱 + Auto 에 대한 이해 필요
- Wrapper클래스 끼리의 == 비교는 주소값임을 기억, 따라서 equals() 사용
- 한쪽이 기본자료형이면 AutoUnBoxing이 동작 => 기본자료형이라도 equals() 는 사용 가능
728x90
반응형
LIST
'프로그래밍 > 자바' 카테고리의 다른 글
[자바/기본] Collection Framework란? (0) | 2024.02.11 |
---|---|
[자바/기본] Generic 이란? (0) | 2024.02.11 |
[자바/기본] String 클래스/ StringBuilder / StringBuffer / StringTokenizer (1) | 2024.01.22 |
[자바/기본] 예외처리 Exception (0) | 2023.10.13 |
[자바/기본] 인터페이스 Interface + 추상 클래스 Abstract + 다형성 Polymorphism (0) | 2023.10.12 |