Java ‐ 데이터 저장 방식과 메모리 관점에서의 기본형과 참조형 비교 & 자바 호출 방식 - dnwls16071/Backend_Summary GitHub Wiki
📚 자바의 참조형 타입
- Wrapper Class
- 기본형을 객체 형태로 감싸는 클래스
- 기본형 타입은 객체가 아니기 때문에 참조형이 필요한 곳에서 사용할 수 있도록 제공됨
- 기본형 타입은 null을 허용할 수 없지만 Wrapper Class는 null을 허용
- 오토박싱과 오토언박싱
- 오토박싱(Auto Boxing) : 기본형 → Wrapper Class
- 오토언박싱(Auto UnBoxing) : Wrapper Class → 기본형
❗변수는 스택에, 값은 힙에 저장하는 이유
- 스택은 메서드 실행 중 잠깐 쓰이고 사라지므로 지역 변수 저장에 적합하다.
- 힙은 크고 유연한 공간이기 때문에 다양한 크기의 객체들을 자유롭게 할당할 수 있다.
- 참조형은 여러 곳에서 참조될 수 있고 수명도 길기 때문에 GC가 관리하는 힙에 저장한다.
❗기본형은 스택에 저장하는 이유
- 메서드 호출 시마다 임시적이고 빠른 저장 공간인 스택이 생긴다.
- 기본형은 크기가 작고 수명이 짧은 경우가 많기 때문에 스택에 넣는 것이 빠르고 효율적이다.
📚 자바 호출 방식 - call by value vs call by reference
- 기본형은 값 자체가 복사되고 원본 변수의 값이 변경되지 않는다.
- 참조형은 객체의 참조 주소가 복사되고 원본 변수의 값이 변경될 수 있다.