개발 공부/Java & Spring

10. 래퍼 클래스(wrapper 클래스)

빵다희 2022. 12. 7. 00:17
래퍼 클래스(wrapper)
- 래퍼클래스란 매개변수로 객체를 요구하거나 기본형 값이 아닌 객체로 저장해야할 때, 객체간의 비교가 필요할 때 등 기본형 변수도 어쩔 수 없이 객체로 다뤄야 하는 경우가 있는데 그 때 사용되는 것이다. 
기본형 래퍼클래스 생성자
boolean Boolean Boolean (blooean value)
Boolean (String value)
char Character Character (String value)
byte Byte Byte (byte value)
Byte (String value)
short Short Short (short value)
Short (String value)
int Integer Integer (int value)
Integer (String value)
long Long Long (long value)
Long (String value)
float Float Float (double value)
Float (float value)

Float (String value)
double Double Double (double value)
Double (String value)
  • 8개의 기본형을 대표하는 8개의 래퍼클래스가 존재한다.
  • 래퍼클래스들은 모두 equals()가 오버라이딩되어 있어서 주소값이 아닌 객체가 갖고있는 값을 비교할 수 있다.
  • Integer객체에 비교연산자를 사용할 수 없다. 대신 compareTo()를 제공한다.
  • toString()이 오버라이딩 되어있어서 객체가 갖고 있는 값을 문자열로 변환하여 반환할 수 있다.
  • 이 외에도 래퍼클래스들은 MAX_VALUE, MIN_VALUE, SIZE, BYTES, TYPE 등의 static상수를 공통적으로 가지고 있다.
  • 숫자와 관련된 Byte,Short,Integer,Long,Float,Double 클래스는 모두 Number클래스의 자손이다. 
  • Number클래스의 자손인 BigInteger는 long으로도 다룰 수 없는 큰 범위의 정수를, BigDecimal은 double로도 다룰 수 없는 큰 범위의 부동 소수점수를 처리하기 위한 것이다. 
오토박싱 & 언박싱
- 오토박싱 : 기본형의 값을 래퍼 클래스의 객체로 자동 변환해준다.
- 언박싱  : 래퍼클래스의 객체를 기본형의 값으로 자동 변환해준다.
- 오토박싱과 언박싱 기능 적용으로 인해 기본형과 참조형간의 형변환 뿐만 아니라 기본형과 참조형의 연산, 참조형간의 연산이 가능 하지만 사실 이 기능은 컴파일러가 제공하는 편의기능일 뿐 자바의 원칙이 바뀐것은 아니다.
문자열을 숫자로 변환하기

* 문자열을 숫자로 변환하는 3가지 방법 

int      i = new Integer("100").intValue();       // floatValue(), longValue(),...
int     i2 = Integer.parseInt("100");             // 주로 이 방법을 많이 사용
Integer i3 = Integer.valueOf("100");

* parse 메소드와 valueOf 메소드 

- 리턴타입이 parse 메소드는 기본형, valueOf 메소드는 래퍼클래스이다. 

- 오토박싱 기능이 적용됨에 따라 반환값에 따른 차이는 없어졌지만 성능은 valueOf()가 조금 더 느리다.

* 문자열 인자 뒤에 진법 인자값을 넣어주면 해당 진법으로 숫자가 반환된다. 아무인자값도 없을때에는 10이 적용된다.

ex) parseInt("100", 2) // 100을 이진법으로 계산 => 4

문자열 -> 기본형 문자열 -> 래퍼 클래스
byte b = Byte.parseByte("100");  Byte b = Byte.valueOf("100"); 
short s = Short.parseShort("100");  Short s = Short.valueOf("100"); 
int i = Integer.parseInt("100");  Integer i = Integer.valueOf("100"); 
long l = Long.parseLong("100");  Long l = Long.valueOf("100"); 
float f = Float.parseFloat("100");  Float f = Float.valueOf("100"); 
double d = Double.parseDouble("100");  Double d = Double.valueOf("100"); 

 

728x90
반응형

'개발 공부 > Java & Spring' 카테고리의 다른 글

12. java.time 패키지 파싱과 포맷  (1) 2022.12.28
11. java.time 패키지  (0) 2022.12.28
9. Math클래스  (0) 2022.12.06
8. StringBuffer 클래스와 StringBuilder 클래스  (0) 2022.12.06
7. 예외처리(exception handling)  (0) 2022.11.12