数组是什么
数组,是有序的元素序列,用于储存多个相同类型数据的集合,数组是在程序设计中,为了处理方便, 把具有相同类型的若干zhidao元素按无序的形式组织起来的一种形式
数组的声明方式
数组有两种声明方式,一种是先声明大小,随后再进行赋值
int[] nums1 = new int[3];
nums1[0] = 0;
nums1[1] = 1;
nums1[2] = 2;
关于赋值,如果只进行声明,而不进行赋值,那么数组默认的初值就是0
另一种是直接进行赋值元素
int[] nums2 = {0, 1, 2};
数组的特点
-
数组是
线性表
,它在内存中的存储占用的是一块儿连续的内存
-
数组的长度
不可变
,如果想改变数组的长度,只能新声明另外一个数组,重新进行赋值 -
数组修改元素的
时间复杂度
是O(1)
,可以直接通过下标进行某个元素的修改 -
数组是
引用型
变量,在传递数组变量时其实传递的是引用
数组声明的内存分析
下面的这段程序的打印结果就是0 1 8
int[] nums2 = {0, 1, 2};
int[] nums22 = nums2;
nums22[2] = 8;
// 引用型变量,打印结果:0 1 8
for (int i = 0; i < nums2.length; i++) {
System.out.print(nums2[i] + " ");
}
如果需要对数组进行复制,可以使用数组的clone方法,这样就会在堆内存中开辟一块新的空间来进行存储新的数组
int[] nums222 =nums2.clone();
在堆内存中会重新开辟一块儿内存,nums222会指向新的数组
二维数组
一般来说,我们使用二维数组来表示矩阵,这两者表示形式很像,二维数组是如下方式声明的:
int[][] nums3 = {{1,2,3},{4,5,6},{7,8,9}};
int[][] nums4 = new int[3][2];
int[][] nums5 = new int[3][];
二维数组或者多维数组的声明,必须要声明当前的数组的长度
我们一般最多使用到三维数组,三维数组以上的适用场景就比较少了,所以就不再详细说了
容易出现的错误
最容易出现的错误绝对是越界了,我们很容易犯这种错误,在访问数组时访问到数组的边界外,这个时候就会报出 ArrayIndexOutOfBoundsException
int[] nums2 = {0, 1, 2};
// 越界异常
System.out.println(nums2[3]);
抛出的异常如下:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 3
at com.banana.array.Test01.main(Test01.java:31)
这个意思就是我们访问的索引超出了数组本身的边界,就要考虑查看索引是否出现问题
总结
千里之行,始于足下,好的开始,已经成功了一半,我们一起加油把,奥里给!!!