[JAVA] 래퍼클래스

728x90

1. 래퍼클래스란?

래퍼클래스는 기본 자료형을 컬렉션 프레임워크 등에 사용할 수 있도록 객체로 만들어주는 클래스입니다. 따라서 자료형의 개수만큼의 클래스가 있습니다. 래퍼클래스는 기본자료형만으로는 할 수 없는 다양한 메서드 기능을 지원합니다. 그리고 기본 자료형은 null이 불가능하지만 래퍼클래스는 null이 가능합니다. 다만 단순연산에는 오히려 메모리 증가만 발생할 수 있기 때문에 좋지않습니다.

 

2. 코드 예제

아래 코드를 통해 래퍼클래스를 확인해보겠습니다.

 

import java.util.Scanner;
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        // int 타입
        int int1 =  35;
        Integer int2 = 2222; // int의 래퍼클래스

        // 숫자비교 매개변수 숫자보다 크다면 1, 동일하면 0, 작으면 -1 반환
        int int3 = int2.compareTo(int1);
        System.out.println("int3->"+int3); // int3->1

        // double 타입으로 형변환
        double int4 = int2.doubleValue();
        System.out.println("int4->"+int4); // int4->2222.0

        // byte 타입으로 형변환
        byte int5 = int2.byteValue();
        System.out.println("int5->"+int5); // int5->-82

        // 두개의 값 중 큰 값을 반환
        int int6 = Integer.max(3,2);
        System.out.println("int6->"+int6); // int6->3

        //문자열을 숫자로 변환
        int int7 = Integer.parseInt("14");
        System.out.println("int7->"+int7); // int7->14

        // int형 중 가장 작은값 반환 -> 반대는 Integer.MAX_VALUE
        int int8 = Integer.MIN_VALUE;
        System.out.println("int8->"+int8); // int8->-2147483648
        
        // 앞숫자를 뒷숫자로 나눠서 몫을 반환
        int int9 = Integer.divideUnsigned(10,3);
        System.out.println("int9->"+int9); // int9->3

        // 이진수로 변환하여 1의 개수를 세는 메서드
        int int10 = Integer.bitCount(10); // 10 -> 1010
        System.out.println("int10->"+int10); // int10->2

        // char 타입
        char ch1 = 'A';
        Character ch2 = 'b';

        // 문자비교 문자로 매개변수까지의 개수 차이만큼 반환
        int ch3 = ch2.compareTo(ch1);
        System.out.println("ch3->"+ch3); // ch3->33

        // 문자 비교
        boolean ch4 = ch2.equals(ch1);
        System.out.println("ch4->"+ch4); // ch4->false

        // 대문자인지 확인 -> 소문자는 isLowerCase()
        boolean ch5 = Character.isUpperCase(ch2);
        System.out.println("ch5->"+ch5); // ch5->false

        // 문자인지 확인 -> 한글, 영문자 모두 가능
        boolean ch6 = Character.isLetter(ch1);
        System.out.println("ch6->"+ch6); // ch6->true

        // 숫자로 변환 가능한지 확인
        boolean ch7 = Character.isDigit('3');
        System.out.println("ch7->"+ch7); // ch7->true

        // 문자가 공백인지 확인 -> \n, \t, ' ' 등등 모두 공백으로 판단
        boolean ch8 = Character.isWhitespace('\t');
        System.out.println("ch8->"+ch8); // ch8->true

        //boolean 타입
        boolean bo1 = true;
        Boolean bo2 = Boolean.FALSE;

        // and 논리연산자
        boolean bo3 = Boolean.logicalAnd(bo1,bo2);
        System.out.println("bo3->"+bo3); // bo3->false

        // xor 연산
        boolean bo4 = Boolean.logicalOr(bo1,bo2);
        System.out.println("bo4->"+bo4); // bo4->true

        //or 연산
        boolean bo5 = Boolean.logicalOr(bo1,bo2);
        System.out.println("bo5->"+bo5); // bo5->true
        
    }
}

 

이외에도 byte, short, long, float, double 등의 래퍼클래스도 있습니다.