Java. 오토박싱 & 언박싱, 문자열과 숫자 변환
문자열과 숫자로 변환하는 방법은 무엇일까?
문자열을 숫자로 변환 하는 방법은 여러가지가 존재한다.
지금까지 배웠던 내용은 아래와 같다.

- intValue() : wrapper 클래스를 기본형으로 바꾸는 방법
- Integer.parseInt() : Integer 클래스 사용
- Integer.valueOf() : 기본형 int 또는 wrapper 클래스로 바꾸는 방법
Byte b = new Byte("100") - 문자열 100을 Byte 래퍼 클래스로 변환
String str = b.toString() - 위의 Byte타입 100을 문자열로 바꾸는 방법
n진법의 문자열을 숫자로 변환하는 방법을 알아보자.

기존의 parseInt() 메소드는 기본 default가 10진수로 변환시켜주는 것이다.
i4 변수를 보면, "100"의 문자열을 숫자로 변환한 뒤 2진수의 숫자로 변환해주는 메소드이다. 그러므로 결과는 4가 나온다.
오토박싱 & 언박싱이란 무엇일까?
int 타입을 Integer 타입으로 자동으로 변환시켜주는 것을 AutoBoxing,반대로 래퍼 클래스의 Integer 타입을 기본형 int 로 자동 변환시켜주는 것을 UnBoxing이라고 한다.
JDK1.5 이전에는 기본형과 참조형간의 연산이 불가능했다. (아래 사진 참고)

현재는 컴파일러가 아래의 사진과 같이 자동으로 변환시켜주는 것이다.

자바의 기본 원칙이 변한 것이 아니다.

원래는 list.add(new Integer(10)); 이 맞지만,
현재는 컴파일러가 자동으로 변환시켜주기 때문에 위의 사진 코드와 동일하게 작성해도 된다.
import java.util.ArrayList;
public class Main{
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(100)); //list에는 객체만 추가 가능 JDK 1.5 이전 방법
list.add(100); //JDK 1.5 이전에는 에러. (오토박싱)
int i1 = list.get(0).intValue(); // intValue()로 Integer를 int로 변환, JDK 1.5 이전 방법
Integer i2 = list.get(0); // list에 저장된 첫번째 객체를 꺼낸다 (언박싱)
}
}
원래는 ArrayList에 객체를 사용하여 추가하는 클래스지만,
기본형을 사용할 수 있는 이유는 오토박싱과 언박싱때문이다.
기본형을 참조형으로 형변환연산자를 사용 불가하는 것이 원칙이었지만, 현재는 컴파일러가 자동 변환시켜주어 허용된다.

정리하자면,
우리가 JDK 1.5의 사용 방식으로 변환할 수 있어야한다? 그것은 아니다.
컴파일러가 오토박싱과 언박싱을 해준다는 것만 알고있으면 된다.