Programing Language/Java

[Java] 자바 기본 자료형 관련 클래스(Java Wrapper Class)

vinedpillar 2022. 7. 22. 23:57

자바 기본 자료형 관련 클래스

  • 자바의 라이브러리에서는 기본 타입(byte, char, short, int, long, float, double, boolean)에 해당하는 값을 갖는 '객체'를 생성하기 위해 클래스를 제공하고 있습니다.

  • 기본 타입을 클래스로 감싼다고 하여 포장 클래스(Wrapper)라고 불립니다.

  • 포장 클래스는 기본 라이브러리에 포함되며, 기본 타입과 같은 이름을 가지고 있습니다.
    (클래스 이름 코딩 컨벤션에 따라 앞글자를 대문자로 지정)
    • byte -> Byte
    • char -> Character
    • short -> Short
    • int -> Integer
    • long -> Long
    • float -> Float
    • double -> Double
    • boolean -> Boolean

  • 포장 클래스는 포장하고 있는 기본 타입의 값은 변경할 수 없고, 클래스로서 활용하기 위해서 사용됩니다.

  • 클래스로의 변경이 필요한 이유는 자바 라이브러리에서 자료구조를 구현한 컬렉션에서 활용하기 위해서 입니다.

 

 

 

박싱과 언박싱(Boxing & Unboxing)

  • 박싱(Boxing)
    • 기본 타입을 포장 클래스의 객체로 만드는 것을 뜻합니다.

    • 포장 클래스의 변수에 기본 타입의 값이 대입될 때 발생합니다.

  • 언박싱(Unboxing)
    • 포장 클래스의 객체에서 기본 타입의 값을 얻어내는 것을 뜻합니다.

    • 포장 클래스의 값이 기본 타입 변수에 포장 클래스의 값이 대입될 때 발생합니다.

    • 문자열을 기본 타입 값으로 변환
      (String to Primitive Type)

    • 포장 클래스의 parse[Type] 메서드를 이용하여 문자열에 포함된 타입을 기본 타입(숫자)로 변경하여 반환할 수 있습니다.

parse[Type]을 이용하여 타입을 변경하는 예시

public static void main(String[] args) {
    // 문자열로 저장된 숫자 데이터 
    String sNumber = "2357";
    int num1 = 0;
    int num2 = 1143;
    int sum = 0;
    
    // 문자열 데이터를 기본 숫자형으로 변경 
    num1 = Integer.parseInt(sNum);
    sum = num1 + num2;
    
    // 4500 출력
    System.out.println(sum);
}

 

  • 포장 클래스의 값 비교
    • 포장 클래스는 참조 타입이기 때문에 비교 연산자인 ==, != 를 사용할 수 없습니다.
      (내부의 값이 비교되는 것이 아닌 주소값만 비교)

    • 따라서 equals() 메서드를 이용해야 내부 값을 비교할 수 있습니다.
equals() 메서드를 통한 값비교 예시

public static void main(String[] args) {
    Integer intObj1 = 200;
    Integer intObj2 = 200;
    
    // 내부값이 아닌 인스턴스의 주소값을 비교하기 때문에 false 출력
    System.out.println(intObj1 == intObj2);
    
    // 내부의 값을 비교하기 때문에 true 출력
    System.out.println(intObj.equals(intObj2));
}

 

 

 

 

포장 클래스(Wrapper Class)

  • 포장 클래스의 주요 메서드
    (대부분의 포장 클래스에서 동일한 메서드 보유)
    • compareTo([Type tpye]): 선언된 포장 클래스 타입을 파라미터로 입력하여 선택된 값과 비교한 차이값을 int 타입으로 반환합니다. 
    • [type]value(): 포장된 값을 type(byte, char, int 등)의 기본 타입으로 반환합니다. 
    • toString(): 포장 클래스의 내부 값을 String 타입으로 반환 합니다.
    • static compare(type x, type y): 선언된 포장 클래스 타입의 기본 타입 2개를 파라미터로 받고, 앞의 수(x)에서 뒤의 수(y)의 차이값을 int 타입으로 반환합니다. 
    • static max(type x, type y): 선언된 포장 클래스 타입의 기본 타입 2개를 파라미터로 받고, 이를 비교하여 더 큰 수를 해당 기본 타입으로 반환합니다.
    • static min(type x, type y): 선언된 포장 클래스 타입의 기본 타입 2개를 파라미터로 받고, 이를 비교하여 더 작은 수를 해당 기본 타입으로 반환합니다.
    • static sum(type x, type y): 선언된 포장 클래스 타입의 기본 타입 2개를 파라미터로 받고, 이를 더하여 해당 기본 타입으로 반환합니다.
    • static parse[Type](String s): 문자열을 숫자로 변환하여 해당 타입으로 반환합니다.  
    • static valueOf(String s): 문자열을 숫자로 변환하여 해당 타입의 포장 클래스 타입으로 반환합니다.
    • static toString(type x): 문자열을 문자열으로 변환하여 String 타입으로 반환합니다.