什么是堆:
    从整个内存空间中划分出一块区域,并取名为堆,用来存储用 new 关键字创建的数组和对象

    如,下面声明一个一维数组

    1. int[] arr = new int[2];

    赋值运算符右边用 new 关键字声明的数组是在堆中申请一段连续的存储单元, 并将各个元素中实际的值存储他在堆里对应的存储单元中;
    而赋值运算符左边声明了一个局部变量 arr,局部变量是在栈区中申请一块存储单元,该存储单元中存储的实际是堆中该数组对应的起始内存地址

    堆 - 图1