[JAVA] Wrapper Class (래퍼 클래스)

sy·2023년 7월 11일
0

JAVA

목록 보기
8/8

Wrapper Class

객체지향 개념에서 모든 것은 객체로 다뤄야한다. 그러나 자바에서는 8개의 기본형을 객체로 다루지 않는다. 그래서 자바가 완전한 객체지향 언어가 아니라는 얘기를 듣지만 대신 보다 높은 성능을 얻을 수 있다.

  • char 형과 int 형을 제외한 나머지는 자료형 이름의 첫 글자를 대문자로 한 것이 각 래퍼 클래스이다.
  • 래퍼 클래스들은 모두 equals()가 오버라이딩 되어 있어서 주소값이 아닌 개체가 가지고 있는 값을 비교한다.
  • 오토박싱이 되어도 Integer 객체에 비교연산자를 사용할 수 없다. 대신 compareTo()를 제공한다.
  • toString()도 오버라이딩 되어 있다.
  • 래퍼 클래스들은 MAX_VALUE, MIN_VALUE, SIZE, BYTES, TYPE 등의 static 상수를 공통적으로 가지고 있다.

Number Class

추상클래스로 내부적으로 숫자를 멤버 변수로 갖는 래퍼 클래스들의 조상이다.

문자열 -> 숫자 변환

// 문자열 -> 기본형
byte b = Byte.parseByte("100");
int i = Integer.parseInt("100);
long l = Long.parseLong("100");
double d = Double.parseDouble("3.14");

// 문자열 -> 래퍼 클래스
Short s = Short.valueOf("100");
Integer i = Integer.valueOf("100");
Long l = Long.valueOf("100");
Float f = Float.valueOf("100");


// n진수 만들기
int i2 = Integer.parseInt("100", 2);
int i16 = Integer.parseInt("100", 16);

오토박싱 & 언박싱(autoboxing & unboxing)

JDK 1.5 이전에는 기본형과 참조형 간의 연산이 불가능 했다. 그러나 이제는 기본형과 참조형 간의 덧셈이 가능하다. 컴퍼일러가 자동으로 변환하는 코드를 넣어주기 때문이다.

// 컴파일러 전
int i = 5;
Integer iObj = new Integer(7);
int sum = i + iObj;

// 컴파일러 후
int i = 5;
Integer iObj = new Integer(7);
int sum = i + iObj.intValue();

오토박싱: 기본형 값을 래퍼 클래스의 객체로 자동 변환해주는 것
언박싱: 반대로 변환하는 것

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10);  // autoboxing. 1 -> new Integer(10)
int value = list.get(0); // unboxing. new Integer(10) -> 10




출처
https://www.youtube.com/watch?v=tBUm6yj4cKQ

0개의 댓글