1.一维数组jvm运行时在内存要占用空间该空间可以分为以下五个区之后所提到的方法区实际上是元区当要使用到一个类时需要将该类对应的字节码文件.class当今方法区进行存储栈方法执行时进栈执行完成后出栈方法内定义的intchar之类的都存储在栈中如下图在方法中执行int[] arrnew aint[2]时会在堆区开辟一块空间作为数组空间内部记录了数组的长度将该空间的地址值存到arr中arr是栈区的一个空间可以存储int[]型的地址值下面这种情况是把arr1中的内容也就是数组的地址赋值给arr22.二维数组1静态初始化2动态初始化3二维数组的内存图a.直接指定一维数组的长度这种方式创建出的二维数组也可以自己创建一维数组将一维数组的地址放到二维数组中达到以为数组不定长的效果也就是说0索引处的0x0022是可以修改的b.不指定以为数组的长度在对二维数组进行赋值之前二维数组的每个元素都是null可以自己创建以为数组长度任意将数组的地址值放到二维数组中3.基本数据类型与引用数据类型基本数据类型的变量里存储的是真实的数据引用数据类型的变量里面存储的是地址值只要是new出来的都是引用数据类型4.一个对象的内存图当一个对象没有被指向时是会自动消失的执行黄框中的代码时一定会进行至少以下7个步骤这段代码执行时首先将teststudent的字节码文件送入方法区。然后main方法进栈开始执行main方法。对于创建对象的那一行的执行过程首先将student的字节码文件放入方法区实际上是元区然后声明好局部变量s用于存储对象的地址然后在堆中开辟空间用于存储对象存储对象的变量以及所有的成员方法的地址。然后进行默认初始化即int默认为0Boolean默认为false。然后进行显示初始化如果在类的定义时直接指定了值比如左上黄框中类定义时直接写了int age18然后进行构造方法初始化最后将对象地址赋值给s5.成员变量与局部变量方法申明指的是形参6.this的内存原理在调用s.method时method中的this会记录调用者的地址值即001之后再使用this.age时会根据地址找到成员变量age