ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-07-29 23:01:54  阅读:183  来源: 互联网

标签:int 定义 -- 创建 024 全栈 数组 new Array


java内存分析

在这里插入图片描述
堆中存放new出来的对象和数组,存放具体的值的变量存放在栈里面

在定义和创建数组的时候内存发生了什么?
在这里插入图片描述
当用户定义了一个数组,例如: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;

标签:int,定义,--,创建,024,全栈,数组,new,Array
来源: https://blog.csdn.net/xuzhibin666/article/details/119222162

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有