ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Wrapper 클래스
    Java/Basic 2022. 10. 24. 08:59

    Wrapper 클래스란?!

    기본형 자료형(Primitive Type) 을 객체 형식으로 감싸는 역할을 Integer 클래스는 Int, Double 클래스는 double를, Long 클래스는 long을 

    Boolean 클래스는 boolean을 감싼다 

     

    Wrapper클래스를 언제 쓸까?!

    - 기본형 자료형(Primitive Type)을 참조형(Reference Type)처럼 다루어야 할 때 

    - 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있습니다.

    예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없습니다.

    이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다 

    8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고

    래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 줍니다.

    이러한 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공

     

    자바에서 제공하는 Wrapper 클래스

    박싱(Boxing)과 언박싱(UnBoxing) 

    래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없습니다.

    단지, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조

     

    박싱(Boxing) 

    - 기본 타입(Primitive Type)의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정 

     

    언박싱(UnBoxing) 

    -  래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정     

     

    # JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리한다

    자동화된 박싱과  언박싱을 오토 박싱(Auto Boxing)  오토 언박싱(Auto UnBoxing)이라 한다 

     

    public class Str {
        public static void main(String[] args) {        
    
            Character ch = new Character('X');  // 박싱
            char c = ch.charValue(); // 언박싱   
           
            Character ch = 'X';  // Auto 박싱
            char c = ch;  // Auto 언박싱        
    
    
        }
    }

    래퍼 클래스도 객체이므로 동등연산자(==) 를 사용하게 되면은 두 인스턴스의 값(value)를 비교하는 것이 아니라 두 인스턴스의 주소값을 비교하게 된다

    public class Str {
        public static void main(String[] args) {
    
            Integer num1 = new Integer(10);
            Integer num2 = new Integer(20);
            Integer num3 = new Integer(10);
    
            System.out.println(num1 < num2);  // true
            System.out.println(num1 == num3);  // false
            System.out.println(num1.equals(num3)); // true 
    
        }
    }

    'Java > Basic' 카테고리의 다른 글

    자료형  (0) 2022.10.28
    List- ArrayList  (0) 2022.10.24
    == 와 eqauls 차이  (0) 2022.10.23
    스캐너(Scanner)  (0) 2022.10.14
    형변환(Casting)  (1) 2022.10.08

    댓글

Designed by Tistory.