8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스
기본형 | Wrapper 클래스 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
자바는 객체지향언어이지만 기본형이 있는 이유
int i = 100;
Integer i2 = new Integer(100);
기본형 변수 i는 값에 직접 접근이 가능하지만 참조형 변수 i2는 100이 저장되어있는 공간의 주소를 가지고 있기 때문에 값에 접근하려면 일을 2번 수행해야한다. 이러한 차이가 성능에 영향을 주기 때문에 기본형이 있는 것이다.
모든 숫자 래퍼 클래스의 조상
래퍼 클래스를 기본형으로 바꿔줄 때 사용하는 메서드들을 가지고 있다. (intValue(), longValue(), doubleValue() 등)
Integer i = new Integer(100);
int i2 = i.intValue();
intValue()
: 래퍼 객체를 기본형으로 바꿔주는 메서드문자열을 숫자로 변환하는 다양한 방법
int i = new Integer("100").intValue();
int i2 = Integer.parseInt("100");
Integer i3 = Integer.valueOf("100");
Integer.parseInt
: 문자열 -> 기본형으로 바꾸는 방법Integer.valueOf
: 문자열 -> 래퍼 클래스로 바꾸는 방법n진법의 문자열을 숫자로 변환하는 방법
int i = Integer.parseInt("100", 2);
int i2 = Integer.parseInt("100", 8);
int i3 = Integer.parseInt("100", 16);
int i4 = Integer.parseInt("FF", 16);
i = 4
i2 = 64
i3 = 256
i4 = 255
오토 박싱 : 기본형의 값을 참조형 객체로 자동 형변환해주는 것
오토 언박싱 : 참조형 객체를 기본형으로 자동 형변환해주는 것
int i = 5;
Integer i2 = new Integer(7);
int sum = i + i2;
int sum = i + i2;
-> int sum = i + i2.intValue();
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100); // 오토 박싱
int i = list.get(0); // 오토 언박싱
list.add(100)
-> list.add(new Integer(100))
컴파일러가 자동으로 변환해준다. 이것을 오토 박싱이라고 한다.
list.get(0)
= new Integer(100)
-> (new Integer(100)).intValue()
컴파일러가 자동으로 래퍼 클래스에 intValue()을 붙여서 기본형으로 변환해준다. 이것을 오토 언박싱이라고 한다.
ArrayList에 Integer 형만 담을 수 있지만 오토 박싱을 통해 기본형 값 100을 추가해도 된다.