본문 바로가기

Java

WrapperClass – 오토박싱 오토 언박싱

박싱이란 값 형식 변수인 기본 자료형이 레퍼런스 형식 변수인 Wrapper 클래스형으로 변환하는 것을 의미한다. 스택상의 메모리 공간에 있던 값이 오른쪽과 같이 힙 상에 객체를 생성해서 스택상의 값을 복사하는 것을 박싱이라고 한다.

 

아… 힙 .. 뭐였지

– 힙:동적 메모리 할당 또는 메모리 동적 할당은 컴퓨터 프로그래밍에서 실행 시간동안 사용할 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재 할당을 받을 수 있다. 이것은 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리의 할당이 이루어지는 정적 메모리 할당과 대조적이다.

힙이란 한마디로 동적메모리할당을 위해 기억되는 메모리 할당공간

기본자료형은 스택영역에 저장되는데 박싱을 통해서 힙역역에 객체를 생성해서 스택상의 값을 복사하는 것이구만!

반대로 힙영역에 레퍼런스 형식의 Wrapper클래스형 객체가 가진값이 스택영역에 기본 자료형으로 선언된 변수에 복사되는건 언박싱!!!!!!!!!!!!

언박싱은 힙영역인 박스에서 값을 빼내서 스택 영역에 복사하는 것으로 이해 하자

package wrappertest;

public class boxing {
public static void main(String[] args){
int n01 = 10;
int n02;
Integer num01;
Integer num02 = new Integer(20);
num01 = n01;//오토박싱 : 스택영역의 값을 힙영역에 객체를 생성해서 집어넣음
n02 = num02; // 오토 언박싱 : 힙영역에서 값을 꺼내서 스택영역에 복사
System.out.println(n01+” “+num01);
System.out.println(n02+” “+num02);
}
}


'Java' 카테고리의 다른 글

패키지 - Pakege  (0) 2016.04.29
메소드 오버라이딩  (0) 2016.04.29
업캐스팅과 다운캐스팅  (0) 2016.04.29
추상클래스  (0) 2016.04.29
스레드의 상태전이,우선순위,동기화  (0) 2016.04.05