java 파일은 필드, 생성자, 메서드로 구성된다.

Static(스태틱) 영역
Stack(스택) 영역
Heap(힙) 영역
=> 데이터타입(자료형)에 따라서 해당 공간에 할당된다.
"Field의 전역변수 + Static 붙은 정적 멤버변수" 가 저장된다.
"Method의 지역변수" 가 저장된다.
Method의 지역변수 : 기본자료형 (int, double, byte 등등)
"참조형의 데이터 타입을 갖는 인스턴스, 배열의 진짜 데이터" 가 저장된다.
참조값 : 해시코드 / 메모리에 저장된 주소를 연결해주는 값

public class HeapAreaEx02 {
public static void main(String[] args) {
String str1 = new String("joker");
String str2 = new String("joker");
if(str1 == str2){
System.out.println("같은 주소값 입니다.");
}else{
System.out.println("다른 주소값 입니다.");
}
}
} // 결과는 '다른 주소값 입니다.'
[출처][JAVA/자바] 메모리 구조(static, stack, heap)|작성자 JOKER