Java에서 변수는 기본형과 참조형 변수로 나눠진다.
기본형 변수의 예로는
intbooleandouble등이 있고
참조형 변수의 예로는
StringArrayClass등이 있다.
사실 이 내용은 몇번을 봐도 계속 햇갈린다..
변수들은 RAM(스택, 힙)에 저장되는데...!
기본형 변수
변수의 위치 : 스택
변수의 값의 위치 : 스택
참조형 변수
변수의 위치 : 스택
변수의 실제 값의 위치 : 힙
(스택에 있는 변수의 값은 힙에 있는 실제 위치의 주소를 갖는다.)
주의
String은 일반적인 참조형 변수들과는 조금 다른 방식으로 저장이 된다...!
int x = 10; // 기본 타입
Person p = new Person(); // 참조 타입
[Stack]
x ───> 10
p ───> (주소값) ─────┐
│
[Heap] ▼
Person 객체
| 변수 타입 | 변수 자체의 위치 | 실제 값의 위치 |
|---|---|---|
기본 타입 (int, char) | 스택 | 스택 |
참조 타입 (Array, 클래스) | 스택 | 힙 (객체는 힙에 저장됨) |