ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 기본 API - Wrapper Class
    CSE/Java 2016. 4. 16. 14:30

    자바 기본 API는 여러 절로 구성되어 있습니다.



    Intro

    Object Class

    Objects Class

    System Class

    Class Class

    String Class

    StringTokenizer, StringBuffer, StringBuilder Class

    Regular Expression & Pattern Class

    Arrays Class

    Wrapper Class

    Math, Random Class

    Date, Calendar Class

    Format Class

    java.time Package




    Wrapper Class

     자바는 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고 하는데, 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다. 포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없습니다. 만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 합니다.


     Wrapper 클래스는 java.lang 패키지에 포함되어 있는데, 다음과 같이 기본 타입에 대응되는 클래스들이 있습니다. 





     박싱(Boxing)과 언박싱(Unboxing)

      기본 타입의 값을 포장 객체로 만드는 과정을 박싱이라하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱이라고 합니다. 


      Integer 형의 박싱과 언박싱에 대한 예제를 알아보도록 합시다.


     * BoxingUnBoxingExam.java


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    package api;
     
    public class BoxingExam {
        public static void main(String[] args) {
            // Boxing
            Integer obj1 = new Integer(100);
            Integer obj2 = new Integer("300");
            Integer obj3 = Integer.valueOf("500");
            
            // Unboxing
            int value1 = obj1.intValue();
            int value2 = obj2.intValue();
            int value3 = obj3.intValue();
            
            System.out.println("value1: " + value1);
            System.out.println("value2: " + value2);
            System.out.println("value3: " + value3);
        }
    }
     
     
     
    cs







     자동 박싱과 언박싱

      기본 타입 값을 직접 박싱, 언박싱하지 않아도 자동적으로 일어나는 경우가 있습니다. 자동 박싱은 포장 클래스 타입에 기본값이 대입될 경우에 발생합니다.


    1
    Integer obj = 100// 자동 박싱
    cs



      자동 언박싱은 기본 타입에 포장 객체가 대입될 경우 발생합니다. 예를 들어 Integer 객체를 int 타입 변수에 대입하거나, Integer 객체와 int 타입값을 연산하면 Integer 객체로부터 int 타입의 값이 자동 언박싱되어 연산됩니다.


    1
    2
    3
    4
    Integer obj = new Integer(200);
     
    int value1 = obj;        // 자동 언박싱
    int value2 = obj + 100// 자동 언박싱
    cs




     문자열을 기본 타입 값으로 변환

      포장 클래스의 주요 용도는 기본 타입의 값을 박싱해서 포장 객체로 만드는 것이지만, 문자열을 기본 타입 값으로 변환할 때에도 많이 사용합니다. 대부분의 포장 클래스에는 "parse + 기본타입" 명으로 되어 있는 정적 메소드가 있습니다. 이 메소드는 문자열을 파라미터로 받아 기본 타입 값으로 변환합니다.






     * StringParseExam.java


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package api;
     
     
    public class StringParseExam {
        public static void main(String[] args) {
            int value1 = Integer.parseInt("50");
            double value2 = Double.parseDouble("3.141592");
            boolean value3 = Boolean.parseBoolean("true");
            
            System.out.println("value1: " + value1);
            System.out.println("value2: " + value2);
            System.out.println("value3: " + value3);
        }
    }
     
     
     
    cs







     포장 값 비교

      포장 객체는 내부의 값을 비교하기 위해 == 와 != 연산자를 사용할 수 없습니다. 이 연산자는 내부의 값을 비교하는 것이 아니라 포장 객체의 참조를 비교하는 것이기 때문입니다. 


      내부의 값만 비교하려면 언박싱한 값을 얻어 비교해야 합니다. 그러나 자바 언어 명세를 보면 아래와 같은 규칙이 있습니다. 박싱된 값이 아래 표에 나와있는 값이면 == 와 != 연산자로 내부의 값을 바로 비교할 수 있습니다. 그 이외의 경우에는 비교할 수 없습니다.




     


    end

     


     * 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.


    댓글

Designed by Tistory.