java全栈系列之JavaSE--数组的三种初始化方法及内存分析024

java内存分析

java全栈系列之JavaSE--数组的三种初始化方法及内存分析024
堆中存放new出来的对象和数组,存放具体的值的变量存放在栈里面

在定义和创建数组的时候内存发生了什么?
java全栈系列之JavaSE--数组的三种初始化方法及内存分析024
当用户定义了一个数组,例如:int [ ] Array;只是定义了一个数组没有创建。这时在栈里记录了一个int类型的数组Array,但是栈里面并没有存放数组里面的数据,当用户创建数组是,例:int [ ] Array=new int[5];在内存空间的堆创建了一个int类型的Array数据,并定义数组长度是5,所以数组创建前也就是在定义的时候,是存放在栈里的,创建后并赋值之后是存放在堆里面的

数组的下标越界:

当用户定义了一个int类型的数组名为Array长度为5,数组的下标为(0-Array.length)-1,也就是0-4,

int [] Array = new int[5];		
//数组也可以直接创建,无需定义,定义则是空数组 
Array[0]=1;	//分别赋予初始值
Array[1]=2;
Array[2]=3;
Array[3]=4;
Array[4]=5;

当我取的值大于数组的最大长度则会出现下表越界的现象

例如:下表最大是4但是我取5的值,则会报错

System.out.print(Array[5])

数组的初始化方式:

//第一种
int []Array;	//只定义数组,并没有创建
//第二种
int [] Array = new int [10];//无需声明数组,直接创建数组并指定长度

静态初始化与动态初始化

静态初始化

int [] Array1={1,2,3,4,5,6,7,8,9,10};		//定义数组时并定义初始值
int [] Array2={11,22,33,44,55,66,77,88,99,100};//定义后无法修改

Man引用类型

Man[] mans={new Man1(),new Man2()};

动态初始化

int [] Array = new int [10];	//先创建后赋予值
Array[0]=100;
Array[4]=400;
上一篇:024、功能分支工作流


下一篇:「HTML+CSS」--自定义加载动画【024】