ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Primitive Wrapper Class
    Programming/Java 2021. 4. 13. 20:49

    Wrapper Class는 primitive data type을 캡슐화하는 클래스이며, 다른 클래스의 객체 인스턴스 및 메소드를 만들기 위해 사용한다.

    Primitive Data Type에 Object처럼 사용하기 위해 Class로 바인딩시키는 역할이라고 할 수 있다.

    1️⃣ primitive type은 class의 generic으로 사용할 수 없고, 2️⃣Object의 하위 클래스를 요구하는 메소드가 있을 때

    일반 primitive data type을 Wrapper class로 감싸서 사용한다.

     

    일단 primitive data type을 이용하면 일정 단위의 데이터 저장을 위해 Array만을 이용할 수 있지만, 원시 데이터 타입을 wrapper class로 감싸면 java의 다양한 collection을 이용할 수 있다.

    따라서 Wrapper Class는 주로 Primitive Data Type을 저장할 Java API의 Collection 클래스의 객체를 만드는데 사용된다.

    출처: https://facingissuesonitcom.files.wordpress.com/2019/06/java-wrapper-classes-for-primitive-type.png

    Primitive Type Wrapper Class Constructor Arguments
    byte Byte byte or String
    short Short short or String
    int Integer int or String
    long Long long or String
    float Float float, double or String
    double Double double of String
    char Character char
    boolean Boolean boolean or String

    위와 같이 Wrapper Class는 8개가 존재하고, Boolean과 Character를 제외한 class들은 Number Class를 상속받는다.

    이 때 primitive data를 wrapper class 인스턴스로 변환하는 작업을 Boxing, 그 반대를 Unboxing이라고 한다.

    JDK 1.5버전 부터는 Java Compiler가 박싱과 언박싱을 자동으로 처리해주는 Auto Boxing, Auto Unboxing이 지원된다

    public class Wrapper02 {
        public static void main(String[] args) {
            Integer num1 = new Integer(7); // 박싱
            Integer num2 = new Integer(3); // 박싱
    
     
            int int1 = num1.intValue();    // 언박싱
            int int2 = num2.intValue();    // 언박싱
     
    ①      Integer result1 = num1 + num2; // 10 
    ②      Integer result2 = int1 - int2; // 4
    ③      int result3 = num1 * int2;     // 21
        }
    }
    //출처: http://www.tcpschool.com/java/java_api_wrapper

    물론 Wrapper Class의 Instance의 value가 같다고 해서 (==)연산자의 결과값이 true인 것은 아니다(인스턴스의 주소 값을 비교하기 때문).

    wrapper class의 instance의 동등 비교를 하기 위해서는 equals() 메소드를 사용해야 한다.

     

    이 때 명확히 구분해야 하는 것은 Primitive Wrapper Class가 Primitive Type임을 의미하지 않는다는 점 이다.

    Wrapper Class는 data type이 할당된 변수와는 달리, primitive data type을 상속받음과 동시에 캡슐화로 숨기면서 인스턴스화된 객체 및 메소드를 정의한다.

     

    참고 자료:

    www.tcpschool.com/java/java_api_wrapper

    en.wikipedia.org/wiki/Primitive_wrapper_class_in_Java

    docs.oracle.com/javase/7/docs/api/java/lang/Integer.html

Designed by Tistory.