자바를 공부하며 작성한 내용입니다. 정확하지 않은 내용이 있을 수 있습니다.
궁금해서 한번 인텔리제이를 활용해서 코드를 짜봤다.
코드를 짜며 알 수 있던 사실 몇 가지가 있었다.
필드변수는 클래스 기반이므로 Heap메모리에 저장되고 지역변수는 메서드 기반이기 때문에 Stack 메모리에 저장된다. 
이로부터 추론해볼 수 있는 또 다른 사실은
- 힙메모리에 저장되는 필드변수는 자동으로 초기화를 해준다.
- 하지만, 메서드 기반 스택메모리 내 지역변수는 초기화를 해주지 않는다.
- 이유는? 종료시 메모리에서 사라지기 때문에
-> (누가 해주는지는 메모리 구조와 세부작동 방식에 대해 조금 더 알아볼 필요가 있다.)
전역변수로 기본형타입을 나열하고 main메서드 내부에서 Main클래스 인스턴스 t를 바탕으로 출력을 해봤다.
public class Main {
byte aByte;
short aShort;
int anInt;
long aLong;
char aChar;
float aFloat;
double aDouble;
boolean aBoolean;
String string;
public static void main(String[] args) {
Main t = new Main();
System.out.println("byte 초기값 = " + t.aByte);
System.out.println("short 초기값 = " + t.aShort);
System.out.println("int 초기값 = " + t.anInt);
System.out.println("long 초기값 = " + t.aLong);
System.out.println("char 초기값 = " + t.aChar);
System.out.println("float 초기값 = " + t.aFloat);
System.out.println("double 초기값 = " + t.aDouble);
System.out.println("boolean 초기값 = " + t.aBoolean);
System.out.println("String 초기값 = " + t.string);
}
}

char의 초기값은 박스모양같은게 나왔는데 \u0000 즉, 숫자 0에 해당하는 기호이다.
public class Main {
public static void main(String[] args) {
char test = 0;
char initialValue = '\u0000';
System.out.println("\\u0000 is equal to number zero? " + (test == '\u0000'));
System.out.println(initialValue);
}
}

숫자와 관련된 정수,실수형타입은 모두 0으로 초기화 되며, 문자형는 '\u0000', 논리형(boolean)은 false가 초기값이다.
힙메모리와 스택메모리 구조에 대해 조금 더 공부해 볼 필요가 있다.
자바(Java)필드와 변수의 선언위치와 초기값(전역변수,지역변수): https://hunit.tistory.com/154
사진출처 : https://www.wallpaperflare.com/pulsar-hd-wallpaper-big-bang-explosion-space-night-star-space-wallpaper-prmib