오토박싱 & 언박싱, 문자열과 숫자변환
문자열을 숫자로 변환하기
- 문자열을 숫자로 변환하는 다양한 방법
문자열을 숫자로 변환하는 방법을 알아보자. 래퍼클래스로 변환하는 방법도 알아보자.
1번은 래퍼클래스를 기본형으로 바꾸는 방법이다 .
문자열을 이용해서 래퍼클래스 객체를 만들고, 거기서 intValue()를 이용해서 int값을 얻었다.
래퍼클래스 Integer를 기본형 Int로 바꾸려면, intValue()를 사용하면 되고,
래퍼클래스 Long을 기본형 Long으로 바꾸려면, longValue()를 사용하면 된다.
2번은 문자열을 Integer로 바꿀 때 가장 많이 사용하는 parseInt()를 사용할 수도 있다.
3번은 래퍼클래스로 변환하는 것인데, valueOf()를 사용하면 된다.
래퍼클래스 Integer가 아니라 기본형 int로 받아도 된다.
이것들을 정리하면 아래와 같다.
문자열을 기본형으로 바꿀 때는, parseByte, parseInt같은 것을 사용하면 되고, ValueOf()도 사용 가능하다.
우리가 바꾸려는 타입에 맞게 앞에 만 바꿔주면 된다. (Integer.valueOf(), Long.valueOf() 등)
문자열을 래퍼 클래스로 바꾸는 방법은, valueOf()로 바꿔준다.
혹은, Byte b = new Byte("100"); 이런식으로 해도 된다.
만약에 래퍼 클래스를 문자열로 바꾸고 싶다면, toString()을 사용하면 된다.
- n진법의 문자열을 숫자로 변환하는 방법
기본적으로 paseInt()는 10진수 변환을 하는데,
int i4 = Integer.parseInt("100", 2); 에서 2부분이 2진수라는 뜻이다.
즉, "100"문자열을 숫자로 바꿀 때, 2진수로 해석해서 바꾸라는 의미이다.
default값은 10으로 10진법이다.
오토박싱 & 언박싱
기본형 Int를 래퍼클래스 Integer로 자동으로 바꿔주는 것을 "오토박싱"이라고 한다.
반대로, 래퍼클래스 Integer를 기본형 int로 바꿔주는 것을 "언박싱"이라고 한다.
- JDK1.5이전에는 기본형과 참조형간의 연산이 불가능 했었다.
i는 기본형이고 iOBJ는 참조형이다.
JDK1.5 이전에는 기본형 + 참조형 같은 연산을 하려고 하면 연산이 불가해서 에러가 발생했다.
그런데 JDK1.5 이후부터는 오토박싱과 언박싱 기능이 제공되어 기본형 + 참조형 같은 연산이 가능해졌다.
그렇다고 해서 자바의 기본 원칙이 바뀐것이 아니라,
컴파일러가 좌측의 코드를 자동으로 우측처럼 바꿔준다.
래퍼클래스를 기본형으로 변환해주는 것이다. (언박싱)
오토박싱도 해준다. 즉, 양쪽다 자동으로 해준다.
- 기본형의 값을 객체로 자동변환하는 것을 오토박싱, 그 반대는 언박싱
그래서, 원래는 ArrayList에는 래퍼클래스 Integer를 담아야 하는데, (지네릭스 12장에서 공부예정)
- ArrayList는 원래 객체만 저장가능한 클래스다.
우리가 list.add(10);이렇게 써도,
컴파일러가 오토박싱기능 수행해줘서 liast.add(new Integer(10));으로 바꿔준다.
그리고 원래, 꺼낼때도 복잡한데,
꺼내면 Integer객체가 나오는데 이것을 int로 바꾸려면 intValue()같은 메서드를 써줘하는데,
이런것들을 안쓰고도, 래퍼클래스 Integer객체를 바로 int로 바꿔준다. 이것이 가능한 것또한, 컴파일러가 언박싱해주기 때문이다.
원래는 기본형을 참조형으로 형변환 연산자를 사용해서 형변환하려하면 형변환 할 수 없다. (기본형을 참조형으로 형변환 연산자 사용 불가) 원칙이다.
그런데, 이 원칙이 허용으로 바뀌었다.
원칙이 바뀐것이 아니라, 컴파일러가 자동으로 바꿔준다 .
기본형을 참조형으로 형변환하는 것이 가능하다.
컴파일러가 Integer intg = (Integer)i; 라는 코드를
자동으로 Integer intg = Integer.valueOf(i);로 바꿔준다.
기본형을 래퍼클래스타입 변수(참조형)에 저장하는 것도 가능하다.
참조형끼리 덧셈도 가능하다.
참조형을 기본형으로 형변환도 가능하다.
원래 안되던 것들인데, 컴파일러가 오토박싱, 언박싱을 해주기 때문이다. (기본형과 참조형간의 자동변환)
컴파일러가 오토박싱 언박싱을 해주기 때문에, 우리가 이렇게 간단하게 형변환 연산자를 통해서 기본형과 참조형간의 형변환이 가능해졌다.
'JAVA' 카테고리의 다른 글
Calendar 예제(1) (0) | 2022.04.25 |
---|---|
날짜와 시간, Calendar 클래스 (0) | 2022.04.20 |
래퍼 클래스, Number 클래스 (0) | 2022.04.18 |
StringBuilder, Math 클래스 (0) | 2022.04.17 |
StringBuffer 클래스의 메서드 (0) | 2022.04.16 |
댓글
이 글 공유하기
다른 글
-
Calendar 예제(1)
Calendar 예제(1)
2022.04.25 -
날짜와 시간, Calendar 클래스
날짜와 시간, Calendar 클래스
2022.04.20 -
래퍼 클래스, Number 클래스
래퍼 클래스, Number 클래스
2022.04.18 -
StringBuilder, Math 클래스
StringBuilder, Math 클래스
2022.04.17