一. 为什么需要数组?
为了存储多个数据值
二.什么时数组?
数组时用来存储同一种数据类型多个元素的容器。数据类型:可以时基本类型,也可以是引用类型
容器:比如教室、衣柜、纸箱等,可以存放多个事物
三.数组的定义和访问
数组的定义格式一:
数据类型[ ]数据名=new 数据类型[长度];
//定义一个长度为6的整形数组
int[] nums = new int[6];
定义格式详解:
1.数据类型:即数组中存储元素的数据类型,可以是基本数据类型,也可以是引用数据类型
2.[ ]:表示数组
3.数组名:数组的变量名,遵循标识符命名规范
4.new:创建数组的关键字,通过new开辟内存空间
5.长度:即数组长度,数组最多能存放元素的个数。数组长度在定义时指定,不可更改
数组的定义格式二:
数据类型[ ] 数组名 = new 数据类型[ ](元素1,元素2,元素3…);
double[] doubleNums = new double[]{.1,.2,0.3};
格式二的好处:
定义时元素是确定的,避免内存空间的浪费
数组的初始化
在内存中为数组开辟连续空间并为每个元素赋值的过程
内存:计算机的重要组件,用于程序运行中临时存储数据
连续空间:数组元素在内存空间种的存放位置时连续的
动态初始化
只指定长度,有系统给出默认值·
整数型:0
浮点型:0.0
字符型:’\u0000‘(空字符)
布尔型:false
引用类型:null
静态初始化
给出初始化值,有系统决定数组长度
数组的访问
通过数组的索引访问数组的元素
索引:也叫下标、脚标、是数组元素距离数组起始位置的偏移量
第一个元素的偏移量为0,所以数组的索引从0开始
格式:数组名[索引]
取值:数组名[索引]
复制:数组名[索引] = 值
数组的遍历
需求
给定一个int型数组,输出数组中的每个元素
分析
A.使用格式一定义一个长度为5cm的int型数组
B.为数组的前三个元素分别赋值为1,2,3
C.使用循环遍历数组
数组的长度:数组名.length
结论
1.数组的最大索引为数组长度-1
2.数组中未手动赋值的元素,有默认值
3.直接输出数组的变量名,得到的是数组的内存地址值
四.Java程序的内存分配
方法区:存储可运行的class文件,包含方法,静态成员,常量等(面向对象部分详解)
栈:方法运行使用的内存,特点是“后进先出”,即最先进入栈区的方法最后出栈,比如main方法本地方法栈:JVM在调用操作系统功能时使用,与开发无关
寄存器:CPU使用,与开发无关
数组类型:变量arr存储的是数组在堆内存种的地址值,而不是数组元素的值,变量arr通过内存地址引用堆内存中的数组,所以数组是引用类型。
五.数组的常见操作
数组使用种的两个常见问题
数组索引越界异常:ArraylndexOutOfBoundsException
当访问不了存在的索引时
异常:即非正常情况,可以简单理解为程序运行过程中过出现错误
空指针异常:NullPointerException
数组引用存储的值为null二非数组的地址值时