int a = 6과 Integer a = 6은 어떻게 다르니? (Stack 메모리와 Heap 메모리)

KIM YONG GU·2023년 9월 15일
0

JAVA Knowledge

목록 보기
26/40

int a = 6;와 Integer a = 6;은 Java에서 다음과 같이 다르게 동작합니다. 이 차이는 주로 데이터 타입과 메모리 관리 측면에서 나타납니다.

int a = 6; (기본 데이터 타입 사용):

int는 기본(primitive) 데이터 타입입니다. 이것은 스택(Stack) 메모리에 직접 값을 저장합니다.
a는 스택 메모리에 6이라는 정수값을 직접 저장하게 됩니다.
스택 메모리에서 변수 a는 실제 데이터를 저장하므로 저장 공간의 크기가 작습니다.
메모리 할당 및 해제에 대한 부담이 적으며, 연산 속도가 빠릅니다.

Integer a = 6; (래퍼 클래스 사용)

Integer는 래퍼(wrapper) 클래스로, 기본 데이터 타입인 int를 객체로 래핑합니다. 이것은 Heap 메모리에 Integer 객체를 생성하고, a는 해당 객체를 참조합니다.
a는 스택 메모리에 Integer 객체의 참조를 저장하게 됩니다. 즉, a는 Heap 메모리에 있는 객체를 가리키는 주소를 저장합니다.
Heap 메모리에서 객체를 생성하므로 저장 공간의 크기가 더 크며, 객체 생성 및 관리 오버헤드가 발생합니다.
객체 지향적인 기능을 활용할 수 있고, null 값을 가질 수 있습니다.
간단히 말해서, int 변수는 직접 값을 저장하므로 메모리 공간과 연산 속도에서 이점이 있지만, Integer 변수는 객체로 래핑되어 더 많은 기능을 제공하고, 객체 지향 프로그래밍의 특성을 활용할 수 있습니다. 선택은 상황에 따라 다르며, 성능과 기능 요구 사항을 고려하여 결정해야 합니다. Java 5부터는 auto-boxing과 unboxing을 통해 두 형태를 쉽게 변환할 수 있습니다.

profile
Engineer, Look Beyond the Code.

0개의 댓글