TIL 20240618 Wrapper 객체

2024. 6. 18. 02:02자바

객체 지향 프로그래밍에서는 모든 것들을 객체로 다뤄야 한다고 한다.

그치만 성능상의 이유나 기타 등등의 이유로 현실과 타협 할 수 밖에 없는 경우가 있다......

 

자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다.

대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있다.

 

기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다.

char타입과 int타입이 각각 Character와 Integer의 래퍼 클래스를 가지고 있고 나머지는 기본 타입의 첫 글자를 대문자로 바꾼 이름을 가지고 있다.

 

 

 

 

 

  1. char, int, long과 같은 것들은 실제로 “값” 이상의 의의를 가지지 않는 경우가 더 많기 때문에, 비용이 많이 드는 객체로 다루는 대신 원시타입 값 그대로를 사용한다고 한다.
  2. 하지만 기본형의 자료들도 충분히 추상화가 가능 할 것 같은데, 예를 들면 소수, 반올림, 정수와 같은 개념들을 들 수 있다.
  3. 자바는 이러한 특징들을 추상화 해서 객체화를 해뒀다. 다만 값 이상의 의의를 가지지 않는 경우에는 성능상의 이유로 원시값 그대로를 사용할 뿐이다.
  4. 결론적으로 객체 특성을 이용한 추상적인 기능을 사용하려거나, 기본형 값 대신 객체로 저장해야 하거나,객체로의 “기능”이 필요 할 때 우리는 원시형 값들을 잠시 객체로 만들어 사용 할 수 있다.
  5. 즉 기본값을 객체화해서 “감싼다”는 의미로 이러한 객체들을 Wrapper Class라고 하는데, 위의 표처럼 대응된다.
  6. 기본값을 객체화 하는것을 박싱 이라고 하며, 객체를 다시 기본값으로 만드는 것을 언박싱이라고 한다.
  7. 이러한 것들을 조금 더 문법적으로 자연스럽게 보여주기 위해서 오토박싱, 오토언박싱이라는 것도 존재한다.
  8. 박싱해서 객체화된 원시값들은 이제 클래스처럼, 구현되어있는 메소드들을 자유롭게 이용이 가능하고, 객체만 할 수 있는 것들을 할 수 있게 된다.
Integer num = new Integer(17);  // Boxing
int n = num.intValue(); // UnBoxing

Character ch = 'X'; // AutoBoxing
char c = ch; // AutoUnBoxing

 

박싱이랑 언박싱, 오토박싱, 오토언박싱에 대해선 추가적으로 공부를 해야할 것 같당ㅇ,,

'자바' 카테고리의 다른 글

TIL 20240615 데몬 쓰레드와 사용자 쓰레드  (1) 2024.06.15
TIL 20240612 쓰레드  (0) 2024.06.12
TIL 20240611 default 메서드와 static 메서드  (0) 2024.06.11
TIL 20240610 Getter 과 Setter  (1) 2024.06.10