堆内存、栈内存是Java内存的两种方式。
堆属于运行时数据区,要在运行时动态分配内存,存取速度较慢,Java的垃圾收集器会自动清除在堆中不在使用的数据
栈中主要存放基本类型的变量和对象的地址,基本类型的变量可以直接赋值放在栈中,但对象的实例化的数据是放在堆中。在栈内存中数据执行完,变量会释放,节约内存空间。栈内存中的数据,没有默认初始化值。
Java中没有实例化(没有new或赋值为null)的类,类的地址放在栈中,类的数据放在堆中,这时堆中是没有数据。当使用的没有实例化的类运行后会报空指针。