자바프로그래밍 Wrapper 클래스

최주영·2023년 3월 22일
0

자바

목록 보기
13/30

기본형 타입은 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다
추가로 기본형 데이터는 null 값을 가질 수 없다 -> 때로는 데이터가 없음을 표현해야함

💡 기본형과 래퍼클래스의 메모리 구조
-> 기본형은 메모리에서 단순히 그 크기만큼의 공간을 차지함
-> 래퍼클래스는 객체 자체를 다루는데 필요한 객체 메타데이터를 포함하므로 더 많은 메모리를 사용
-> 즉 CPU 연산을 많이 하는 경우에는 기본형을 사용하는것을 권장!

✅ Wrapper 클래스

  • 기본자료형을 객체로 사용할 수 있게 해주는 클래스

  • 사용하는 이유
    -> 객체와 같이 연동하기 위해
    -> 즉 Wrapper 클래스 안의 메소드를 적용시킬 수 있음 ex) max, min 메소드
intdoublelongbooleanchar
Integer 맵핑Double 맵핑Long 맵핑Boolean 맵핑Character 맵핑

✅ 박싱, 언박싱, 오토박싱, 오토언박싱

  • 박싱 : 기본형을 이용해서 래퍼클래스를 만드는 것 valueOf() 메서드
  • 언박싱 : 래퍼클래스에서 기본형으로 바꾸는 것 xxxValue() 메서드
// 기본형 -> 래퍼객체
int value = 7;
Integer boxedValue = Integer.valueOf(value);

// 래퍼객체 -> 기본형
int unboxedValue = boxedValue.intValue();

하지만 개발자들은 이런식으로 변환하는 것이 자주 발생해서 불편함이 발생
-> 이런 문제를 해결하기 위해서 오토박싱오토언박싱이 등장
-> 이러한 오토박싱 , 오토언박싱 은 개발자 대신 컴파일러가 valueOf xxxValue() 등 코드를 추가해줌

// 기본형 -> 래퍼객체
int value = 7;
Integer boxedValue = value; // 오토 박싱

// 래퍼객체 -> 기본형
int unboxedValue = boxedValue; // 오토 언박싱

✅ 래퍼클래스의 주요 메서드

  • valueOf() : 래퍼 타입을 반환한다. 숫자, 문자열을 모두 지원한다.
  • parseInt() : 문자열을 기본형으로 변환한다.
  • compareTo() : 내 값과 인수로 넘어온 값을 비교한다. 내 값이 크면 1 , 같으면 0 , 내 값이 작으면 -1 을 반환한다.
  • Integer.sum() , Integer.min() , Integer.max() : static 메서드이다. 간단한 덧셈, 작은 값, 큰값 연산을 수행한다
 Integer i1 = Integer.valueOf(10);//숫자, 래퍼 객체 반환
 Integer i2 = Integer.valueOf("10");//문자열, 래퍼 객체 반환
 int intValue = Integer.parseInt("10");//문자열 전용, 기본형 반환
 
 //비교
 int compareResult = i1.compareTo(20);
 
  //산술 연산
 System.out.println("sum: " + Integer.sum(10, 20));
 System.out.println("min: " + Integer.min(10, 20));
 System.out.println("max: " + Integer.max(10, 20));

✅ Class 클래스

조회 방법 3가지

Class clazz = String.class; // 클래스에서 조회하는 방법
Class clazz = new String().getClass(); // 인스턴스에서 조회하는 방법
Class clazz = Class.forName("java.lang.String"); // 문자열로 조회하는 방법
  • getDeclaredFields() : 클래스의 모든 필드를 조회한다.
  • getDeclaredMethods() : 클래스의 모든 메서드를 조회한다.
  • getSuperclass() : 클래스의 부모 클래스를 조회한다.
  • getInterfaces() : 클래스의 인터페이스들을 조회한다

✅ System 클래스

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글