본문 바로가기

Developer/Java-oop

#010. Wrapper Class 알아보기...

#010. Wrapper Class 알아보기...

 

1. 자바에서 사용되는 변수는 변수(값을 메모리에 저장)와 참조변수(값이 저장된 메모리 위치) 두 가지가 있다. 여기서 변수는 int, double, float, char ... 이 있으며, new 예약어로 생성되는 instance는 모두 참조변수가 된다.

우리는 이전강좌 #008 에서 String 객체에 값이 변할 때마다, 참조 주소 값(메모리 실 주소 값 아님)이 변경되는 것을 보았다. 화면으로 보여 줄 순 없지만, Wrapper의 기능으로 비슷한 결과를 얻을 수 있다.

테스트를 위해 oop 패키지에 WrapperDemo Class를 만들고 아래와 같이 작성해본다.

코드

package oop;

public class WarpperDemo {

    public static void main(String[] args) {

        Integer i = new Integer(10);

        System.out.println("i 값 : " + i + ", i 의 참조값: " + i.hashCode());

        i=100;

        System.out.println("i 값 : " + i + ", i 의 참조값: " + i.hashCode());

        Character c = new Character('C');

        System.out.println("c 값 : " + c + ", c 의 참조값: " + c.hashCode());

        c = 'D';

        System.out.println("c 값 : " + c + ", c 의 참조값: " + c.hashCode());

    }

}

결과

i 값 : 10, i 의 참조값: 10

i 값 : 100, i 의 참조값: 100

c 값 : C, c 의 참조값: 67

c 값 : D, c 의 참조값: 68

설명

적절한 예는 아니지만, 위와 같이 new 로 선언 했지만 참조 값이 들어있지 않고, 결과 값을 가지고 있는 것을 확인 할 수 있다. (Double, Float 은 참조 값이 나온다. 헉..)

 

2. 위 설명은 적절한 예가 아니다. 아래의 예제를 보고 정확하게 이해해 보자.

Wrapper Class의 종류는 Boolean, Byte, Short, Character, Integer, Long, Float, Double 총8개가 있으며, Object 로부터 상속을 받아, 속성과 메서드(위예제..ㅎ)를 사용할 수 있다.

코드

package oop;

public class WarpperDemo {

    public static void main(String[] args) {

        Integer i = 0;

        int value = 100;

        i = (Integer)value;

        System.out.println("i 의 값: " + i);

        i = value+50;

        System.out.println("i 의 값: " + i);

        

        int ii = Integer.parseInt("333");

        System.out.println("ii 의 값: " + ii);

    }

}

결과

i 의 값: 100

i 의 값: 150

ii 의 값: 333

설명

문장4: Integer 객체로 선언된 i 가 있다.

문장5: 일반변수에 value 에 정수 100 을 보관했다.

문장6: Integer 객체로 형 변환 해서 i객체에 값을 넣는다.

문장8: 형 변환 없이 i 객체에 정수를 대입했다. (이것이 바로 AutoBoxing 이다.)

문장4~9: Wrapper Class의 정확한 예가 되겠다. 아래 문장11은 흠..

문장11: 그럼 Integer.parseInt("333"); 는 무엇인가. 아래 3번을 참고하도록 한다.

 

3. 지금까지 한번도 설명에 없었던, Java API 가 무엇인지 알아보겠다.

JAVA API (Application Programming Interface) 문서는 자바 라이브러리의 클래스 와 메서드를 나열해 놓은 문서다.

영문: http://download.oracle.com/javase/6/docs/api/index.html

한글: http://xrath.com/javase/ko/6/docs/ko/api/index.html (찾아보니 한글도 있다.)

위 주소로 들어가보면, 아래와 같은 이미지가 나올 것이다.

설명

좌측 상단에 있는 java.lang 는 패키지를 말한다.

좌측 하단에 있는 Integer 은 클래스를 말한다.

우측 화면은 선택한 클래스에 대한 설명, 메서드 설명 등을 말한다.

우측에 박스를 보면 외쪽과 오른쪽으로 나눠 지게 된다. 왼쪽은 반환형 타입 이며, 오른쪽은 메서드 사용법과 설명에 대해서 나와 있다. parseInt 는 메서드 명이며, (String s) 는 파라메터 의 타입을 정의를 의미한다.

그래서 위의 예제에서 사용한 parseInt 메서드는 반환 값이 int 형이다. 문자열이 숫자타입으로 변형이 가능하다면, 숫자로 반환해주는 메서드가 되겠다.

어쩌면 parseInt 메서드는 Wrapper Class와 상관이 없을지도 모르겠다.

 

다음시간엔 Array 변수에 대해서 알아보자.

 

잡담. 자꾸 강좌가 제목과 관계없는 산으로 가고 있다.