Development/JavaEssential

java - 두 가지 데이터 타입

linuxism 2011. 9. 24. 22:16
Java의 두 가지의 데이터 타입(기본 타입, 참조 타입)에 대해 알아보자.


1. 기본 타입(Primitive Type)

   - 기본 타입 int, double 변수에 값이 들어가는 타입이다.

   - 기본 타입의 종류는 byte, short, char, int ,float, double, boolean이 있다.

   - 기본 타입의 크기가 작고 고정적이기 때문에 메모리의 Stack에 저장이 된다.

   - ex : int a = 1

            long = 30L 

            double = 33.14

            float = 20.14F

   - 변수가 사용된 메소드가 종료되거나 사용된 객체가 사라질때 자동으로 파괴된다.


2. 참조 타입(Reference Type)

    - new 키워드를 이용하여 객체를 생성하여 데이터가 생성된 주소를 참조하는 타입이다.

    - 참조 타입의 데이터의 크기가 가변적이고 동적이기 때문에 동적으로 관리되는 Heap영역에 저장이 된다.

    - String과 배열은 참조타입과 달리 new 없이 생성이 가능하지만 기본타입이 아닌 참조타입이다.

    - ex : Object object = new Object();

             Dog dog = new Dog();

    - 더 이상 참조하는 변수가 없을 때 가비지 콜렉션에 의해 파괴된다.


추가적으로 기본 타입과 참조 타입 변환을 도와주는 랩퍼 클래스와 오토박싱에 대해 알아보자.


* 랩퍼 클래스 

  - 기본 타입을 참조 타입으로 바꿔주는 클래스를 랩퍼클래스(wrapper) 클래스라고 한다.

  - 기본 타입을 참조 타입으로 바꾸면 데이터를 가공 하는 있는 메소드를 사용 할 수 있다.

     예를 들어 int를 랩퍼 클래스 Integer로 바꾸면 int 값과 편리한 여러 메소드를 같이 쓸 수 있다.  

  - 자바 1.4버전까지는 랩퍼클래스를 제공했다. 자바 5부터는 Autoboxing(Boxing, Unboxing)을 제공한다.


<기본 타입과 랩퍼 클래스>  

  - ex : int i = 10;

           Integer integer = new Integer(i); //wrapper class 생성

           int j = integer.intValue();

 


 

 * 오토박싱(Autoboxing)

 

   - 자바 5에 추가된 기능이다. 자동으로 기본 타입을 참조 타입으로 만들어준다.

   - 기존 래퍼 클래스를 이용시 형변환 작업을 반복적으로 해주었지만 오토박싱으로 통해 자동으로 형변환을 해준다.

   - ex :  int i = 10;

             Integer integer = i; //Boxing

             int j = integer;      //Unboxing

   

   - ex : 

    public class Autoboxing {

             public static void main(String[] args) { 

                 ArrayList<Integer> list = new ArrayList<Integer>(); 

                 for(int i = 0; i < 10; i++){ 

                     list.add(i);

                 }

             } 

        }




출처 - http://cafe.naver.com/javacircle/58853