Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

오토박싱 & 언박싱 본문

Java/JAVA2

오토박싱 & 언박싱

빌드이너프 2023. 6. 29. 15:31

오토박싱 & 언박싱

오토 박싱: 기본형의 값을 객체로 자동변환하는 것(int라는 기본형을 래퍼 클래스의 Integer로 자동으로 바꿔주는 것)

언박싱: 객체의 값을 기본형으로 자동변환하는 것(래퍼 클래스의 Integer을 int라는 기본형으로 자동으로 바꿔주는 것)

컴파일 전의 코드(불가능) 컴파일 후의 코드(가능)
int i = 5;
Integer iObj = new Integer(7);

int sum = i + iObj;
int i = 5;
Integer iObj = new Integer(7);

int sum = i + iObj.intValue(); // 언박싱(Integer -> int)
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10); // 오토 박싱 10 -> new Integer(10)
int value = list.get(0); // 언박싱 new Integer(10) -> 10

 

코드

import java.util.ArrayList;

public class AutoBoxingTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(100); // JDK 1.5 이전에는 에러발생, 자동으로 객체로 바꿔준다
        list.add(new Integer(100));

        // Integer i = list.get(0);// list에 저장된 첫 번째 객체를 꺼낸다

        // int i = list.get(0).intValue(); // intValue()로 Integer을 int로 변환
        int i = list.get(0); // intValue()없이 사용할 수 있다

        System.out.println(i); // 100
    }
}

100

 

 

 

코드

import java.util.ArrayList;

public class AutoBoxingTest {
    public static void main(String[] args) {
        int i = 10;

        // 기본형을 참조형으로 형변환(형변환 생략 가능)
        Integer intg = (Integer)i; // 컴파일러 => Integer intg = Integer.valueOf(i);
        Object obj = (Object)i; // 컴파일러 => Object obj = (Object)Integer.valueOf(i);

        Long lng = 100L; // 컴파일러 => Long lng = new Long(100L);

        int i2 = intg + 10; // 참조형과 기본형간의 연산 가능
        long l = intg + lng; // 참조형 간의 덧셈도 가능

        Integer intg2 = new Integer(20);
        int i3 = (int)intg2; // 참조형을 기본형으로 형변환도 가능(형변환 생략 가능)
    }
}
컴파일 전의 코드(가능하다) 컴파일 후의 코드
Integer intg = (Integer)i;
Object obj = (Object)i;
Long lng = 100L;
Integer intg = Integer.valueOf(i);
Object obj = (Object)Integer.valueOf(i);
Long lng = new Long(100L);

 

'Java > JAVA2' 카테고리의 다른 글

형식화 클래스  (0) 2023.07.03
Calendar 클래스  (0) 2023.07.02
래퍼(wrapper) 클래스, Number 클래스  (0) 2023.06.29
StringBuilder, Math 클래스  (0) 2023.06.28
StringBuffer 클래스의 메서드  (0) 2023.06.28