int a = 10;               // 스택에 값 10 저장

int[] arr = new int[3];   // 힙에 배열 생성, 스택엔 주소만 저장

arr[0] = 99;


Stack:

 ├─ [a: 10]

 ├─ [arr: → 0x0012F4A0]   (힙 주소 참조)


Heap:

 └─ [0x0012F4A0] → [99, 0, 0]


이렇게 하면 이해가 안되나?