래퍼 클래스(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 |