文章目录
- 数组的定义
- 数组初始化
- 数组静态初始化
- 数组的动态初始化
- 数组的地址值和元素访问
- 数组索引/下标/角标
- 数组遍历
- 数组常见操作
- 数组内存
- Java内存分配
- 数组内存图
数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑。
int类型的数组容器,可以存储:byte、short、int;但是不能存储boolean和double
double类型的数组容器,可以存储:byte、short、int、long、float、double
建议:容器的类型,和存储的数据类型保持一致
数组的定义
格式一:数据类型[ ] 数组名
例:int[ ] array
格式二:数据类型 数组名[ ]
范 例:int array [ ]
数组初始化
初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程
分类:
- 静态初始化
- 动态初始化
数组静态初始化
1.完整格式:
数据类型[ ] 数组名 =new 数据类型[ ]{元素1,元素2,…};
2.简化格式(推荐使用)
数据类型[ ] 数组名 ={元素1,元素2,元素3…};
数组的动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值,
格式:数据类型[数组名=new 数据类型[数组长度];
范例:int[ ] arr =new int[3];
数组动态初始化和静态初始化的区别:
java数组的基础
动态初始化:手动指定数组长度,由系统给出默认初始化值。只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度;需求中已经明确了要操作的具体数据,直接静态初始化即可。
数组的地址值和元素访问
数组的地址值表示数组在内存中的位置
扩展:
解释一下地址值的格式含义[De776ec8df
[:表示当前是一个数组
D:表示当前数组里面的元系都是double类型的
@:表示一个间隔符号。(固定格式)
776ec8df:才是数组真正的地址值,(十六进)
平时我们习惯性的会把这个整体叫做数组的地址值。
数组索引/下标/角标
1.索引的特点:从0开始,逐个+1增长,连续不间断
2.把数据存储到数组当中
格式: 数组[索引]=具体数据或者变量;
数组遍历
遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!
在Java当中,关于数组的一个长度属性,length
调用方式:数组名.length
遍历并打印数组
小练习:定义一个数组存储1,2,3,4,5,6,7,8,9,10遍历数组得到每一个元素。
要求:
1,如果是奇数,则将当前数字扩大两倍
2,如果是偶数,则将当前数字变成二分之一
数组常见操作
1.求最值
2.遍历数组求和
需求:生成10个1~100之间的随机数存入数组。
1)求出所有数据的和
2)求所有数据的平均数
3)统计有多少个数据比平均值小
3.交换数组中的数据
需求:定义一个数组,存入1,2,3,4,5。按照要求交换索引对应的元素。
交换前:1,2,3,4,5
交换后:5,4,3,2,1
3.打乱数组数据
需求:定义一个数组,存入1~5。要求打乱数组中所有数据的顺序。
数组内存
Java内存分配
- 栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行
- 堆 存储对象或者数组,new来创建的,都存储在堆内存
- 方法区 存储可以运行的class文件
- 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关
- 寄存器 给CPU使用,和我们开发无关
其中
栈:方法运行时使用的内存,比如main方法运行进入方法栈中执行
堆:new来创建的都存储在堆内存
main方法的内存图:
数组内存图
1.当定义一个数组
int[ ] arr=new int[2];
main在栈中定义变量arr,new在堆中开辟空间,并且将地址值给arr
2.两个数组指向同一个空间
int[ ]arr1 ={11,22};
int[ ]arr2 = arr1;
arr1和arr2记录同一个地址值
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时
候都是修改之后的结果了
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26027.html