[Java] Wrapper 클래스

Yujeong·2024년 5월 19일
0

Java

목록 보기
6/22
post-thumbnail

기본형의 한계

자바는 객체지향 언어이지만, 객체가 아닌 int, double같은 기본형(Primitive Type)이 있다.
기본형은 객체가 아니기 때문에 한계가 존재한다.

  • 객체가 아니므로 메서드를 제공할 수 없다.
  • 컬렉션 프레임워크를 사용할 수 없다.
  • 제네릭을 사용할 수 없다.
  • null을 가질 수 없다.

Wrapper 클래스

래퍼 클래스는 기본형을 객체로 감싸서 편리하게 사용하도록 도와준다.

종류

기본형래퍼 클래스
booleanBoolean
byteByte
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

특징

  • 불변
  • equals()로 비교

메서드

메서드설명
valueOf()래퍼 타입 반환. 숫자, 문자열 모두 지원
parseInt()
parseLong()
parseDouble()
문자열을 기본형으로 변환
compareTo()값 비교. 내 값이 크면 1, 같으면 0, 작으면 -1 반환
Integer.sum()덧셈, static 메서드
Integer.min()작은 값, static 메서드
Integer.max()큰 값, static 메서드

예시

public class WrapperClassMain {
    
    public static void main(String[] args) {
        // Integer
        Integer newInteger = new Integer(10);
        Integer integerObj = Integer.valueOf(10);
        
        // Long
        Long longObj = Long.valueOf(100);
        
        // Double
        Double doubleObj = Double.valueOf(10.5);
        
        // 래퍼 클래스 -> 기본형
        int intValue = integerObj.intValue();
        long longValue = longObj.longValue();
    }
}

박싱, 언박싱, 오토박싱, 오토언박싱

  • 박싱(Boxing)

    • 기본형 → 래퍼 클래스
    • 자주 사용하는 숫자를 미리 생성해두고 재사용
    • Integer.valueOf(10)
  • 언박싱(Unboxing)

    • 래퍼 클래스 → 기본형
    • intValue()
  • 오토박싱(Auto-boxing), 오토 언박싱(Auto-unboxing)
    컴파일러가 valueOf(), xxxValue()의 코드를 대신 추가해주는 기능

    int value = 7;
    Integer boxedValue = value; // 오토 박싱
    int unboxedValue = boxedValue; // 오토 언박싱

기본형과 래퍼 클래스 차이

  • 기본형
    • 메모리에서 단순히 그 크기만큼의 공간 차지
    • ex. int는 4byte 메모리 사용
  • 래퍼 클래스
    • 기본형의 값, 객체를 다루기 위해 필요한 객체 메타데이터 포함
    • 많은 메모리 사용
    • 약 8~16byte 메모리 추가 사용

참고
Java의 정석
김영한의 실전 자바 - 중급 1편

profile
공부 기록

0개의 댓글

관련 채용 정보