本章对于Java数组的总结
目录
1.数组:
定义:数组是固定个数的相同类型的元素集合,有顺序,可重复。
数组的四大要素:数组的数据类型,数组的长度,数组的数组名,数组的下标。
数组的特点:
- 数组是有序排列的
- 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
- 创建数组对象会在内存中开辟一整块连续的空间
- 数组的长度一旦确定,就不能修改。
2.一维数组的声明和创建
2.1一维数组的静态初始化:
定义数组(为数组的数组元素分配内存空间)的时候直接给数组赋初始值。
Java 语言中数组必须先初始化,然后才可以使用。
格式:
注意:数组变量名中存储的是数组在内存中的地址,数组是引用数据类型。
2.1.1数组的引用:
通过下标来引用/调用数组。
或者说数组中元素的访问方式为:数组名称[索引]
数组的长度属性是:length。length是属性,不是方法。
下标为0表示获取第一个元素,下标为length-1 表示获取最后一个元素。
问题:数组的最大索引可以怎么表示?
答:数组名. length – 1 // 前提:元素个数大于0
2.2一维数组的动态初始化:
定义:定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。
格式:
数据类型[] 数组名 = new 数据类型[长度];
// 动态初始化和数组元素的赋值操作分开进行
int[] arr = new int[3];
2.3数组的几个注意事项:
- 什么类型的数组存放什么类型的数据,否则报错。
- 数组的大小一旦指定,就不可更改。
- 数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
- 数组创建后,有默认值(与变量的区别)。
- 若JAVA中数组元素没有初始化,会给定一个默认的初始值。
3.数组的遍历:
定义:就是一个一个数据的访问。也叫轮询。
3.1 for each遍历数组
java5之后,Java提供了一种更简洁的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组时,无须获得数组和集合长度,无须根据索(下标)引来访问数组元素,foreach循环自动遍历数组和集合的每一个元素。
格式:
for (数据类型 变量名 : 遍历对象数组名){
循环语句;
}
4.数组的总结:
4.1数组的基本操作?
获取元素: 元素类型 变量 = 数组名[index];
设置元素: 数组名[index] = 值;
遍历数组元素: 建议使用for循环,事先知道循环的次数.
数组长度: int len = 数组名.length;
索引范围: 从0开始,逐一递增. [0,数组名.length-1]
4.2 两种数组定义时的特点和场景有什么区别?
- 当前已经知道存入的元素值,用静态初始化。
- 当前还不清楚要存入哪些数据,用动态初始化。
5.数组使用常见问题:
问题1:如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)
问题2:如果数组变量中没有存储数组的地址,而是null, 在访问数组信息时会出现NullPointerException(空指针异常)
6.二维数组:
定义:“数组的数组”,二维数组的每一个元素是一个一维数组。
格式:
6.1访问二维数组的元素:
6.2二维数组的长度:
6.3二维数组的遍历(两重for循环):
7.数组工具类Arrays:
7.1Arrays.equals()方法
用来比较两个数组,如果相同输出true,如果不同输出false。
7.2Arrays.toString()方法:
用来输出数组的字符串表现形式(打印数组)
7.3Arrays.sort()方法:
表示对一个数组进行排序,默认升序排列,更新后的数组保存到原数组中
7.4Arrays.binarySearch()方法:
表示在数组中查找元素,输出元素的索引值
注意!!! 该方法是使用 二分法查找,只支持有序的数组,否则结果不正确。
7.5Arrays.fill()方法:
用来填充数组中的值,fromIndex和toIndex可不填,不填时默认所有位置都填value的值
fromIndex,toIndex是要更新的元素的索引值,且[fromIndex toIndex) //from<=i<to