在黑马学习了一周了,有些内容是我学习中感觉有必要分享的: 对象内存图
内存总共分为:栈内存、堆内存、方法区、本地方法栈、寄存器。我们目前在java中常考虑的是前三个。
1、一个对象调用方法的内存图
由图可知:
首先在方法区中产生phone.class文件,包括成员变量和成员方法,然后main方法进栈,在栈内存中产生一个phone p的变量,并且在堆内存中产生一个Phone文件,然后把Phone在堆中产生的内存地址赋给栈中的p。当访问堆中的成员变量时,通过栈内存中的地址找到堆内存的成员变量和成员方法。
数组
数组是用来存储数据的,把一些比较多的数据集中到一起,方便内存的管理和使用。
1、数组的概念: 数组就是存储固定长度的容器,并且数组存储的长度要保持一致。 2、数组的定义: 数组的定义分为三种: 1、动态定义: int[ ] a =new int[ 数组长度 这种定义方式是已知数组长度,但是数组内容不可知。 举例:动态定义一个数组长度为10的数组 int[ ] a=new int[10] 2、复杂的静态定义 int[ ] a = new int[ ]{数据1,数据2,数据3}; 举例:定义一个数组元素为1,2,3的数组 int[ ] a =new int[ ]{1,2,3} 3、简易的静态定义 Int[ ] a = { 数据1,数据2,数据3}; 举例:定义一个数组元素为1,2,3的数组 Int[ ] a= {1,2,3}; 3、数组的访问: 索引:(也叫数组下标),是每一个存储数组元素都含有的,都会有一个从0开始的编号,这个编号称为数组索引 索引访问数组的元素: 数组名[索引]=数值 是为数组中的元素赋值 数值=数组名[索引] 是获取数组中的元素 例: 访问数组a中的第三个元素: a[2]; 给数组的第一个元素赋值: a[0]=1; 4、数组的内存图: 如上图所示,数组程序的执行流程: 1、main方法进入方法栈执行 2、创建数组,在堆内存中开辟空间存储数组,并且在堆内存中有自己的内存地址 3、在栈内存中生成arr数组变量,并且将堆内存的内存地址赋值给arr数组变量 以上是一个数组的内存图,其实两个数组在内存的执行流程大致相同。 5、数组的遍历 数组的遍历是根据for循环,将数组中的每一个元素分别取出来。 例:访问数组a中的每一个元素 for(int i=0;i<a.length;i++){ System.out.println (a); } 以上就是最近学习的一些需要注意的地方。 |