数组
-
数组的定义
相同类型数据的有序集合
-
数组的声明创建
先声明数组变量,才能在程序中使用数组。
dataType[] arrayRefVar;首选方法
dataType arrayRefVar[];
使用new操作符创建数组:
dataType[] arrayRefVar = new dataType[arraySize];
数组的元素通过索引访问,索引从0开始
arrayRefVar[0]
获取数组的长度:
arrays.length
-
数组三种初始化
-
静态初始化
int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}
-
动态初始化
int[] a = new int[2]; a[0] = 1; a[1] = 2;
-
默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
-
-
数组边界
下标的合法区间:[0,length-1],越界就会报错;
ArrayIndexOutOfBoundsException:数组下标越界异常!
-
数组的使用
普通的for循环遍历数组,可以操作下标
For-Each循环,不能操作下标
数组作方法入参
数组作返回值
-
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
int a[][] = new int[2][5];
-
Arrays类
数组的工具类java.util.Arrays
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用对象来调用,也可以使用对象调用。
常用功能:
给数组赋值:fill()
给数组排序:sort()
比较数组:equals()
查找数组元素:binarySearch方法进行二分查找
-
冒泡排序
通过数组元素间依次两两比较,每一轮比较出一个最大或最小的元素到数组头或尾部。
冒泡排序的优化:
public static void AsSort(int[] arrays){ int temp = 0; boolean flag = false;//声明一个标志位减少没有意义的比较 //外层控制循环多少轮 for (int i=0;i<arrays.length-1;i++){ //内层控制每次把最大元素放到最后 for(int j=0;j<arrays.length-i-1;j++){ if (arrays[j]>arrays[j+1]){ temp = arrays[j+1]; arrays[j+1] = arrays[j]; arrays[j] = temp; flag = true; } } if (flag == false){ break; } } }
-
当一个数组中大部分元素为0,或者为同一值得数时,可以使用稀疏数组来保存该数组。
处理方式:
记录数组一共有几行几列,有多少个不同值
把具有不同值得元素和行列及值记录在一个小规模得数组中,从而缩小程序的规模。