1.数组
定义:数组就是一个变量,储存相同数据类型数据
或者:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型
格式:数据类型[] 数组名 = new 数据类型[数组长度];
动态初始化:只指定长度,系统给出初始值
数据类型[] 数组名 = {数据};
静态初始化 给出初始化值,由系统决定长度
* 声明数组有两种形式
int[] a;
int a[];
ps:大多数程序员喜欢使用第一种形式的,因为它将类型int[](整数数组)与变量名分开了。
2.使用数组中的数据(需补充)
数组名中存储的是数组第一个元素的地址
数组名的空间是分配在栈上面的
数组中的元素空间是分配在堆上面的
扩展:栈和堆的区别?
3.获取数组长度
数组名.length;
数组长度下标是从0开始算的。
int[] a = new int[100];
ps:这个数组的下标从0~99,而不是1~100.
当你想访问数组长度以外的数据时,如:a[100]。这时程序就会引发异常:“array index out of bounds”,即我们常说的数组越界。
4.获取数组中某一个元素
数组名[下标]
数组拷贝:需要用到Arrays类中的copyOF方法。
int[] a = {1,2,3,4,5}; int[] b = new int[6];
b = Arrays.copyOF(a,a.length);
因为第二个参数是新数组的长度,这个方法还可以用来增加数组的大小
int[] a = new int[10];
System.out.println(a.length); //10
a = Arrays.copyOf(a, 2*a.length);
System.out.println(a.length); //20
数组排序:Arrays类中的sort方法:采用的优化的快速排序算法
练习:
int[] a = new int[];//错,未指定数组长度
int[] b = new int[10];//对
int[] c = new []{10};//错 new后面少了int数据类型
int[] d = new int[]{10};//对
int[] e ={}; //对
int f[] = {2,3,4};//对
5、总结
1)、数组就是一个变量,存储相同数据类型的数据,
内存上是连续的空间。
2)、可以指定数组名和数组长度来声明数组,
但是数组的长度一旦声明就不能修改
3)、数组元素可以通过数组名[下标]来访问,下标
从0开始。
4)、数组可以是一维也可以多维的
6、多维数组
二维数组:二维数组中的每一个元素,都是一维数组
int[][] m = new int[2][3];
int[][] n = {{2,3,4},{20,30,40}};
访问30 4
n[1][1] n[0][2]
三维数组:三维数组中的每个元素,都是二维数组
int[][][] k = {
{{2,3,4},{20,30,40}},
{{7,8,9},{70,80,90}}
}
访问9 k[1][0][2]
* 数组元素反转(就是把元素对调)
public static void reverseArray(int[] arr) {
for (int i = 0;i < arr.length / 2 ; i++) {
//arr[0]和arr[arr.length-1-0]交换
//arr[1]和arr[arr.length-1-1]交换
//arr[2]和arr[arr.lentth-1-2]
//...
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
* 冒泡排序