래퍼클래스부분 추가하기
문자열을 숫자, 래퍼클래스로 변환하는 다양한 방법
1. 문자열을 이용해서 래퍼클래스의 객체를 생성한뒤 intValue() 매서드를 사용한다. (문자열 => 래퍼 클래스)
int i = new Integer("100").intValue();
2. 문자열에 parseInt() 매서드를 사용한다. (문자열 => 기본형)
int i2 = Integer.parseInt("100");
기본형과 이름이 같은 클래스를 래퍼클래스의 parse로 시작하는 매서드를 사용하면 문자열을 기본형으로 변경할 수 있다.
(parseInt, parseByte, parseShort, parseInt, parseLong, parseFloat, parsedouble)
n진법의 문자열을 숫자로 변환하는 방법
int i4 = Integer.parseInt("100", 2); // 100(2), 4
int i5 = Integer.parseInt("100", 8); // 100(8), 64
int i6 = Integer.parseInt("100", 16); // 100(16), 256
int i7 = Integer.parseInt("FF", 16); // 100(16), 255
3. 문자열에 valueOf() 매서드를사용한다. 문자열 => 래퍼 클래스
int i3 = Integer.valueOf("100");
// int i3 = new Integer("100");
// 대부분의 래퍼클래스는 문자열을 받는 생성자를 가진다. valueOf()매서드를 사용하는 것과 같은
// 결과인 새로운 래퍼클래스를 생성한다.
// Integer i3 = Integer.valueOf("100"); // valueOf()의 원래는 반환 타입이 Interger이다.
하지만 편리함을 위해 매서드의 이름을 통합하여 모든 래퍼 클래스에서는 valueOf()를 사용한다. valueOf를 사용하는 것과 parseInt를 사용하는 것은 반환값의 차이가 있다. valueOf()의 원래는 반환 타입이 Interger이다.
박싱 & 언박싱 (Boxing & UnBoxing)
래퍼 클래스는 기본형 값을 감싸는 클래스로 기본형을 객체로 만들어 다룰수 있게 해준다. 하지만 기본형과 참조형 간의 연산은 불가능하기 때문에 연산이 필요할 경우 다시 기본형으로 변환해야 한다.
이때 기본형 데이터를 래퍼 클래스의 인스턴스로 변환하는 것을 박싱(Boxing), 반대로 래퍼 클래스의 인스턴스를 기본형 데이터로 변환하는 것을 언박싱(UnBoxing)이라고 한다.
- 래퍼 클래스의 값은 참조만할 수 있으며 저장된 값의 직접적인 변경이 불가능하다.
// 박싱(Boxing)
Integer i = new Integer(100);
// 언박싱(UnBoxing)
int i2 = i.intValue();
오토박싱 & 오토언박싱(AutoBoxing & AutoUnBoxing)
JDK 1.5이전에는 기본형과 참조형간의 연산이 불가능 했다. 하지만 JDK 1.5 이후부터는 박싱과 언박싱이 필요하다 판단되면 컴파일리거 자동으로 변환하여 가능해졌다. 이렇게 자동화된 박싱과 언박싱을 오토박싱(AutoBoxing)과 오토언박싱(AutoUnBoxing)이라 한다.
int i = 5; // 기본형
Integer iobj = new Integer(7); // 참조형
int sum = i + iobj; // 기본형과 참조형간의 연산, 오류 발생
int sum = i + iobj.intValue(); // 컴파일 후의 코드, 오토언박싱
기존의 박싱, 언박싱 방식과 달리 박싱, 언박싱을 하기 위해 번거롭게 new 키워드를 사용하여 인스턴스를 생성하거나 언박싱 메서드를 사용하지 않아도 객체를 참조할 수 있게 되었다.
// 오토박싱(AutoBoxing)
Integer i = 100; // 기존 : new Integer(100),
// 오토언박싱(AutoUnBoxing)
int i2 = i; // 기존 : i.intValue();
'Java' 카테고리의 다른 글
[JAVA] 유용한 클래스(Math클래스, 래퍼클래스, Number클래스) (0) | 2023.11.04 |
---|---|
[JAVA] 날짜와 시간 그리고 Calendar 클래스 (0) | 2023.11.02 |
[JAVA] StringBuffer 클래스 (0) | 2023.11.02 |
[JAVA] String 클래스 (0) | 2023.10.31 |
[JAVA] Object 클래스 (0) | 2023.10.28 |