[TIL] Wrapper클래스

2026. 1. 28. 22:51·Programming Language/Java

 

Wrapper클래스

  • 값들을 싸고 있는 것과 같다고 하여 Wrapper Class 라고 부릅니다.

기본타입(primitive type) 래퍼클래스(wrapper class)

byte Byte
char Character
int Integer
float Float
double Double
boolean Boolean
long Long
short Short
  • char, int의 래퍼 클래스는 각각 Integer와 Character이고 나머지는 대문자로 시작된다는 점 외 이름은 동일

Wrapper 클래스가 필요한 이유

  • 기본 값이 있는데도 불구하고 래퍼 클래스가 필요한 이유는 아래 있는 두 가지의 이유와 같습니다
  1. 래퍼 클래스는 추가적인 옵션을 다양하게 제공해주기 때문
    • 예를 들어
    Integer hundred = Integer.valueOf("100");
    Boolean value = Boolean.valueOf("True");
    
    //valueOf = 객체를 “클래스에 따라 변환”하는 데 사용되는 함수입니다
    
    • 스트링에서 boolean 값 또는 integer 값을 출력할 경우 래퍼 클래스를 이용해 실행할 수 있습니다
  2. 래퍼 클래스는 유틸리티 메소드를 제공
    • float가 있고 이 특정 float의 정숫값을 출력하려고 할 때 intValue 메서드를 사용할 수 있습니다
    • 추가로, 만약 2진법으로 이루어진 스트링을 전환하고 싶을 때,
      • 다시, 2진법 형태의 스트링이 정수를 나타내도록 전환시키고 싶은 경우, 래퍼 클래스에는 이런 것들을 실행할 수 있는 많은 유틸리티 메소드가 있다
    • 또 래퍼 클래스의 추가적인 기능으로는 기본 값들을 컬렉션에 저장시킬 수 있습니다
      • 컬렉션에 저장하려면 추가 대상이 꼭 객체여야하고 래퍼 클래스는 이 기본값에 객체를 제공하는 역할을 해야합니다
  3. //Conversion Float floatWrapper = Float.valueOf(57.0f); int floatToInt = floatWrapper.intValue(); // 57 Integer seven = Integer.valueOf("111", 2); Integer.toString(seven,2);

래퍼 클래스의 생성자로 정수 생성하기

Integer integer = new Integer(5);
Integer integer1 = new Integer(5);

//Integer(int) 생성자는 Java 9부터 deprecated 되었으며, 사용이 권장되지 않는다.

래퍼 클래스의 정적 메서드로 정수 생성하기

Integer integer = Integer.valueOf(5);
Integer integer1 = Integer.valueOf(5);
  • 각각의 래퍼 클래스는 모두 정적 메소드를 갖고 있는데
Integer integer = Integer.valueOf("54654");
  • 이런식으로 값으로 스트링을 넣을 수 있습니다

둘 중 어떤 것이 좋을까?

Integer i1 = new Integer(5);
Integer i2 = new Integer(5);
Integer i3 = Integer.valueOf(5);
Integer i4 = Integer.valueOf(5);

i1== i2
//false ❗ (캐시 범위 밖)

i3 == i4 // true ✅ (캐시 범위 안)

//Integer.valueOf()는 -128~127 범위의 값에 대해 동일한 객체를 재사용하므로, 이 범위 내에서는 == 비교 시 true가 나올 수 있다.
  • integer 참조 타입
  • i1 참조하는 값
  • 참조 변수에 대해 {==}는 값을 비교하지 않습니다
    • 값의 메모리 주소를 비교
  • 스트링 클래스와 동일하게 모든 래퍼 클래스 또한 불변성을 갖습니다
    • 그 말은 값이 지정된 이후에는 변경될 수 없다는 말
  • 여기 보면 i1에 대해 새로운 정수 변수가 생성되었고, i2에 대해 또 다른 정수 변수가 생성이 됐는데 값은 같은 숫자를 가지고 있는 것
  • Integer.valueOf()의 기능은 존재하는 객체 중 같은 값을 가지는 게 있는지 체크한 후 있다면 재사용합니다.
    • 만약 다른 객체에서 동일한 값을 찾는다면, 그 값을 다시 사용하고 동일한 결과를 출력
    • 해당 객체의 값이 변하는 것이 아니기 때문에 괜찮다
    • 정수 → 불변성 따라서 괜찮
  • 그렇기 때문에 두 개의 다른 참조 값이 하나의 객체를 가리키고 있다고 해도 전혀 문제가 되지 않습니다.

추천 방식

  • Integer.valueOf() 또는 valueOf()를 사용해서 어떤 래퍼든 메서드를 생성하고 객체가 생성되어 있다면 매번 새로운 객체를 생성하지 않아도 되게 다시 활용할 수 있게 하는 것이 좋습니다.
    • 만약 new를 사용한다면 새로운 객체를 매번 사용하고 있는 걸 의미하는데
    • Integer.valueOf()는 그런 방식x
    • 이 메서드는 Heap 안에 존재하는 기존 객체를 다시 사용하려고 할 것입니다. (정수에도 동일하게 적용)
      • float, Double, String을 값을 받을 수 있습니다
      • 이 모든 생성자를 이용할 수 있고 글자 생성자를 이용할 수 있습니다
      • 나아가 boolean과 스트링을 입력할 수 있습니다
      Boolean
      • boolean 생성자도 이용가능
      • 문자열이 "true"(대소문자 무관)일 때만 true, 그 외 모든 값은 false
      • 이걸 통해 값을 출력할 수도 있습니다.
    • Boolean b1 = new Boolean("true"); // true Boolean b2 = new Boolean("True"); // true Boolean b3 = new Boolean("False"); // false Boolean b4 = new Boolean("SomeString"); // false

'Programming Language > Java' 카테고리의 다른 글

[TIL] 자바 객체 설계부터 상속까지 (+ toString이 자동 호출되는 이유)  (0) 2026.02.03
[TIL] JAVA 배열에 관해서  (0) 2026.01.30
[TIL] String 클래스  (0) 2026.01.28
[TIL]자바 프로그래밍의 참조 자료형  (0) 2026.01.28
[WIL] 자바 반복문 그리고 아쉬운 부분  (0) 2025.11.02
'Programming Language/Java' 카테고리의 다른 글
  • [TIL] 자바 객체 설계부터 상속까지 (+ toString이 자동 호출되는 이유)
  • [TIL] JAVA 배열에 관해서
  • [TIL] String 클래스
  • [TIL]자바 프로그래밍의 참조 자료형
dev_Hyeonjoon
dev_Hyeonjoon
문제를 풀며 사람들에게 감동✨을 전하고 가치를 만드는 개발자가 되고 싶습니다 💻
  • dev_Hyeonjoon
    Hyeonjoon's code
    dev_Hyeonjoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • Programming Language (29)
        • JavaScript (0)
        • Java (27)
      • Front-end (10)
        • React-project (5)
        • Vanilla[JS]-project (5)
        • study (0)
      • AI Tools (1)
      • Back-end (0)
      • 독서록 (0)
      • 기타 (5)
      • Trouble Shooting (2)
        • Python (1)
      • 자격증 (1)
      • 알고리즘 (1)
        • 백준 (1)
      • FrameWork (0)
        • Node.js (Express.js) (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리액트
    자바기초
    vanillajs
    형변환
    자바
    구름IDE
    객체지향
    Java
    조건문
    토이프로젝트
    코딩
    Til
    사지방
    파이썬
    군자기계발
    OOP
    사지방코딩
    바닐라js
    자바공부
    군대에서코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
dev_Hyeonjoon
[TIL] Wrapper클래스
상단으로

티스토리툴바