[자바] Wrapper 클래스

Gammi·2022년 11월 14일
0

JAVA

목록 보기
26/35

Wrapper 클래스


  • 기본 데이터타입을 객체 형태로 관리해주는 클래스 모음

    -> java.lang 패키지에 위치

  • 기본 데이터타입과 1 : 1로 대응하는 8개 클래스 제공

    (Byte, Short, Integer, Long, Float, Double, Character, Boolean : 대문자로 적어야 함!)

  • Wrapper 클래스에서 제공하는 상수, 메서드 등을 활용하여 기본 데이터타입 데이터 다양하게 처리 가능


// byte 타입
System.out.println("byte 타입 메모리 크기(bit) : " + Byte.SIZE);
System.out.println("byte 타입 메모리 크기(byte) : " + Byte.BYTES);
System.out.println("byte 타입 메모리 최소값 : " + Byte.MIN_VALUE);
System.out.println("byte 타입 메모리 최대값 : " + Byte.MAX_VALUE);

// short 타입
System.out.println("short 타입 메모리 크기(bit) : " + Short.SIZE);
System.out.println("short 타입 메모리 크기(byte) : " + Short.BYTES);
System.out.println("short 타입 메모리 최소값 : " + Short.MIN_VALUE);
System.out.println("short 타입 메모리 최대값 : " + Short.MAX_VALUE);

// character 타입
System.out.println("character 타입 메모리 크기(bit) : " + Character.SIZE);
System.out.println("character 타입 메모리 크기(byte) : " + Character.BYTES);
System.out.println("character 타입 메모리 최소값 : " + (int)Character.MIN_VALUE);
System.out.println("character 타입 메모리 최대값 : " + (int)Character.MAX_VALUE);
// character 타입만 최소값과 최대값 구할 때 int 타입으로 형변환 필요함!!!!

// float 타입
System.out.println("float 타입 메모리 크기(bit) : " + Float.SIZE);
System.out.println("float 타입 메모리 크기(byte) : " + Float.BYTES);
System.out.println("float 타입 메모리 최소값 : " + Float.MIN_VALUE);
System.out.println("float 타입 메모리 최대값 : " + Float.MAX_VALUE);

// int 타입
System.out.println("int 타입 메모리 크기(bit) : " + Integer.SIZE);
System.out.println("int 타입 메모리 크기(byte) : " + Integer.BYTES);
System.out.println("int 타입 메모리 최소값 : " + Integer.MIN_VALUE);
System.out.println("int 타입 메모리 최대값 : " + Integer.MAX_VALUE);

// double 타입
System.out.println("double 타입 메모리 크기(bit) : " + Double.SIZE);
System.out.println("double 타입 메모리 크기(byte) : " + Double.BYTES);
System.out.println("double 타입 메모리 최소값 : " + Double.MIN_VALUE);
System.out.println("double 타입 메모리 최대값 : " + Double.MAX_VALUE);





오토 박싱


  • 기본 데이터 타입 -> Wrapper 클래스 타입 객체로 자동 변환 기능

    • int -> Integer, char -> Character ···
  • Java 1.5 변환 과정을 생략해도 자동으로 변환 수행하도록 변경됨


int num1 = 10;
Integer n1;
n1 = num1;
// 오토 박싱





오토 언박싱


  • Wrapper 클래스 타입 객체 -> 기본 데이터 타입으로 자동 변환 기능

    • Integer -> int, Character -> char ···

int num2;
Integer n2 = 20;;
num2 = n2;
// 오토 박싱

🔗 참고

  1. 기본 데이터타입과 Wrapper 클래스타입 간 연산을 수행할 경우 Wrapper 클래스 타입 객체를 오토 언박싱 후 연산 수행함
  2. Object 타입 변수에 기본 데이터타입 저장 가능
    -> 기본데이터타입을 Wrapper 클래스 타입을 오토박싱 후 다시 Object 타입으로 업캐스팅 일어남





문자열 -> 기본 데이터 타입으로 변환


  • 주로 form 태그의 input 태그로 데이터를 입력받거나 자바, 안드로이드 등 GUI 환경으로 데이터 입력 받을 때 수치 데이터를 입력하더라도 문자열로 취급

    -> 해당 문자열을 연산하려면 Wrapper 클래스에서 제공하는 메서드 통해 변환해야 함


< 기본 문법 >

Wrapper클래스명.pase기본데이터타입(문자열 변수 또는 데이터)

  • 정수형으로 변환할 경우 : Integer.parseInt();
  • 실수형으로 변환할 경우 : Double.parseDouble();

String strNum = "100.0";
Double dNum = Double.parseDouble(strNum);
System.out.println(dNum);
	
strNum = "1234";
int iNum = Integer.parseInt(strNum);
System.out.println(iNum);





Wrapper 클래스의 메서드


  • 기본 데이터타입들을 다양하게 처리하기 위한 메서드 제공됨

  • 주로 static 메서드 형태로 호출하여 사용

    -> 클래스명.메서드명() 형태로 호출

  • 기본 데이터타입과 Wrapper 클래스 객체 모두 활용 가능


max() : 두 정수의 최대값을 계산하는 메서드

int num1 = 10, num2 = 20;
Integer n1 = 10, n2 = 20;
System.out.println(Integer.max(num1, num2));
System.out.println(Integer.max(n1, n2));

min() : 두 정수의 최소값을 계산하는 메서드

system.out.println(Integer.min(num1, num2));

< 10진수 정수를 다양한 형태의 진법으로 변환 >

toBinaryString : 2진법
toOctalString : 8진법
toHexString : 16진법

System.out.println("정수 10을 2진수로 변환 : " + Integer.toBinaryString(num1));
System.out.println("정수 10을 8진수로 변환 : " + Integer.toOctalString(num1));
System.out.println("정수 10을 16진수로 변환 : " + Integer.toHexString(num1));

< Character 클래스를 활용한 문자 데이터 처리 >

Character.isXXX() : 판별
Character.toXXX() : 변환

char ch = 'A';
System.out.prinln("원본 문자 데이터 : " + ch);

if(Character.isUpperCase(ch)) {
// 문자가 대문자라면 (isUpperCase : 대문자 판별)
  System.out.println("소문자로 변환 : " + Character.toLowerCase(ch));
  // toLowerCase : 소문자 변환 
}else if (Character.isLowerCase(ch)) {
// 문자가 소문자라면 (isLowerCase : 소문자 판별)
  System.out.println("대문자로 변환 : " + Character.toUpperCase(ch));
  // toUpperCase : 대문자 변환
}else if(Character.isDigit(ch)) {
// 문자가 숫자라면 (isDigit : 숫자 판별)
}else if(Character.isWhitespace(ch)) {
// 문자가 공백이라면 (isWhitespace : 공백 판별)
}else {
  System.out.println("기타 문자");
}
profile
개발자가 되었어요⭐️

0개의 댓글