数组是一组具有相同类型的元素的集合。
一、数组的定义:
int[] a 表示定义一个a,类型是存在int类型元素的数组,大小不确定。
int[] a = {1,2,3,4,5};表示定义一个变量a,其类型是数组,该数组的元素类型是int,该数组进行了初始化操作,数组大小确定为五个,元素分别是1,2,3,4,5.
int[] a =new int [] {1,2,3,4,5};
boolean[] a = {true,false};
String[] a = {"Hello ","World"};
String[] a = new String[] {"A","B"};
Random[] a = { new Random(),new Random(),new Random()};
注意:int[] a; a = {1,2,3,4,5}; 这种用法是错误的,不能使用这个语法
int[] a; a = new int[] {1,2,3}; 而这种语法是正确的
int[] a = new int[3]; 定义一个数组,元素个数为三;该式等价于 int[] a = new int[] {0,0,0}
String[] a = new String[3]; 该式等价于 String[] a = new String[] {null,null,null};
注意:数组的长度一旦确定是无法更改的。
int[] a = new int[3]; 定义一个有三个元素的数组,让a引用指向该数组
a = new int[5]; 定义一个新的有五个元素的数组,让a引用指向新的数组
上面这种写法是可以的,本质上数组长度没有变,只是改变了a的引用指向。
二、数组的下标:
1.数组下标的类型为int类型,其下标范围为[0,数组的长度)。
2.使用下标访问数组元素的具体代码:
a[下标] = 0;将该位置的元素赋值为0;
b = a[下标];将该位置的元素赋值给另一个变量
三、对数组常见操作:
1.sort(排序操作)
自定义sort排序
2.binarySearch(二分查找)
注意:只有在数组有序的情况下,才可以进行二分查找。
3.equals(判断两个数组是否相等)
4.fill
5.copyOf(复制数组)
copyOfRange(复制范围内的数组)
6.toString(相当于遍历,得到数组的字符串表示)
7.arraycopy
具体用法:在使用时输入原数组、原数组复制的开始下标、目标数组,目标数组的开始下标,拷贝长度。
代码1:实现数组的遍历
按照从前到后的顺序,访问数组中的每个元素(使用a.length来获取数组的长度)
代码2:实现数组元素的交换
代码3:实现两个数组之间的交换
使用数组过程中常见的两个异常:
1.下标越界异常
2.空指针异常
对一个值为null的引用做解引用操作时,会出现空指针异常。
扩展:
1. 对于引用类型来说,形参的改变不影响实参(除通过引用改对象之外)。
2.一个对象可以被多个引用指向,而一个引用只能指向一个或0个对象,不能指向多个。
注意:在下面这种情况下,a引用为空也不会出错。
从以上步骤可以看出,当执行了b[1 ] = 100时,a中的值发生了变化。
四、多维数组
二维数组实际上就是将多个一维数组整合在一起的一个数组,多(n)维数组是将多个
(n-1)维数组整合到一起。下面通过对二维数组的相关操作来理解多维数组。
多维数组 | 形式 | 类型 |
一维数组 | long[] a; | long |
二维数组 | long[][] b; | long[],是引用类型 |
long[][] a = new long[10][]; 因为类型为long[],是引用类型,引用类型的默认值是null,所以该数组十个元素的值都为null。a[3]得到的类型为long[],a[3][0]代表从a这个数组取出下标是3的元素,元素类型为long[],所以从语法上讲,这种情况下还可以取出元素中的元素,但是所有默认值都为null,对其解引用就会出现空指针异常。
综上所述,数组的大部分知识就以归纳完毕,如有错误,请指正!