출처 : https://m.post.naver.com/viewer/postView.nhn?volumeNo=6759557&memberNo=30800755&vType=VERTICAL
15강에서 Java 컬렉션에 대해서 알아볼 때, ArrayList클래스로 String의 배열을 만들려면, 아래와 같이 하면 된다고 하였다.
그러면, ArrayList로 정수 배열을 만드려면 어떻게 해야할까?
16강에서 배운 제네릭(generic)에서 꺽쇠(<> )안에 저장할 클래스타입을 명시한다고 하였는데, int, long, float, double 같은 것은 기본자료형으로 클래스가 아니라서 사용할 수가 없다.
위의 사례 외에도 정수나 실수 등 java가 기본으로 제공하는 자료형이 아니라 클래스 형태로 사용해야 할경우가 생긴다. 그럴 때는 int(정수)를 멤버변수로 가지고 있는 myInteger클래스를 써야하거나, double(실수)를 멤버변수로 가지고 있는 myDouble이라는 클래스를 만들어서 쓸 수도 있겠다.하지만 친절한 우리의 java는 그런 경우를 고려해서 미리 각각의 기본자료형에 해당하는 클래스를 만들어서 사용할 수 있도록 클래스들을 제공하고 있다.
이러한 클래스들을 Wrapper 클래스라고 한다. Wrapper는 랩을 씌운다는 의미이다. 즉, 원래 자료형에다가 랩을 씌운 클래스라고 하여 Wrapper클래스인 것이다.
Java가 제공하는 Wrapper 클래스 들
기본 자료형은 이에 대응하는 Wrapper클래스를 모두 만들어 두었다.
String은 왜 없는지 혹시 궁금해 하는 독자가 있을 수도 있다. 문자 1개를 뜻하는 char는 기본자료형이지만 문자열인 String은 그 자체가 이미 Java가 만들어준 클래스이다. 기본자료형이 아니다! 문자열 형태의기본자료형은 원래 없기 때문에 Wrapper로 변환해서 쓸 필요도 없다.
int와 double을 코딩할 때 자주 쓰고 있으니, Wrapper클래스도 Integer와 Double을 주로 사용하면 된다. 다른 클래스도 모두 사용법은 똑 같다.
그러면, Integer 위주로 사용법을 익혀보자.
Wrapper 클래스 사용법
Wrapper클래스의 사용법이라고 해봐야 기본자료형을 Wrapper 클래스로 바꾸거나 Wrapper클래스를다시 기본자료형으로 바꾸는 정도의 기능을 사용하면 된다.
Integer(int value) // 생성자로 35같은 int를 Integer로 바꾼다.
Integer(String s) // 생성자로 “35”같은 String을 Integer로 바꾼다.
static int parseInt(String s) // 정적메소드로 “35”같은 String을 정수 int로 바꿔 준다.
static String toString(int i) // 정적메소드로 35를 “35”로 바꿔준다.
String toString() // Intger클래스 안에 담긴 정수(35)를 “35”로 바꾼다.
int intValue() // Integer클래스 안에 담긴 정수(35)를 35로 바꾼다
.3번째, 4번째 것인 parseInt와 toString은 숫자(int)와 문자열(String)간에 서로 바꿀 때 사용될 일이 많다.
물론 Integer와 int간의 변환도 많이 사용이 되지만 Java가 int와 Integer는 자동으로 변환해 주기 때문에 많이 안쓰게 된다. 이 부분은 아래서 다시 다루고 위의 메소드 사용법은 다음과 같다.
Wrapper클래스와 기본자료형 간의 변환을 Boxing과 UnBoxing이라는 용어를 사용한다.
int를 Integer에 넣으면 Boxing, 다시 Integer를 int로 꺼내오면 UnBoxing이라고 한다.
Wrapper(감싸는 클래스)에 넣었다 뺐다하는 것을 영어로 쓴 말이다.
Integer와 int의 자동변환
– AutoBoxing 과 AutoUnBoxing
기본자료형인 int와 Wrapper클래스인 Integer를 변환하는 것이 많이 사용되는데, 더 좋은 방법을 java버전 1.5문법에서 부터 제공하기 시작했다.
즉, 서로 변환을 아래와 같이 직관적으로 사용할 수 있다.
자동으로 서로 변환되기 때문에 Integer가 마치 기본자료형인 int인 것처럼 신경안쓰고 아래와 같이 산술연산도 맘대로 가능하다.
마치 int를 다루듯이 클래스를 신경쓰지 않고 산술연산을 자유롭게 할 수가 있다.
ArrayList에 Wrapper클래스 사용 예
그러면 Wrapper클래스의 사용법을 알았으니, 맨앞에 설명했던 ArrayList에 정수배열을 담거나 실수 배열을 담는 것으로 다시 돌아가면 아래와 같이 사용하면 될 것이다.
내가 모르는 사이에 오토박싱, 오토언박싱이 자동으로 되어서 int가 Integer로 바뀌어서 저장되고, 다시 꺼내쓸때는 int로 바껴서 사용되는 것이다.'
다음 회차에서는 파일을 읽고 쓸 때 사용할 수 있는 Stream클래스에 대해서 다루어 보자!
'IT > 자바' 카테고리의 다른 글
PersonVo3 객체 직렬화 (0) | 2018.05.23 |
---|---|
File 클래스 (0) | 2018.05.23 |
trhow와 throws로 예외처리를 하는 방법 (0) | 2018.05.22 |
자바(Java) awt 패널(panel) 클래스 사용방법 (0) | 2018.05.21 |
Random 클래스에 대해서 (0) | 2018.05.19 |