1.数组: 能用来储存一组相同类型的数据
2.数组的声明和创建:分为俩种形式动态初始化和静态初始化
动态初始化:数组在定义的时候只设置长度,不设置内容
格式:数据类型[] 数据名称 = new 数据类型[数据长度];
int[] arr = new int[5];
静态初始化:数组台定义的时候直接设置内容
简化格式:数据类型[] 数据名称 = {值1,值2,值3 ......};
int[] arr ={1,2,3,4,5};
完整格式:数据类型[] 数据名称 = new 数据类型[]{值1,值2,值3......}
int[] arr = new int[]{1,2,3,4,5};
在静态初始化过程中不用设置长度,像
数据类型[] 数据名称 = new 数据类型[数据长度]{值1,值2,值3......}
int[] arr = new int[5]{1,2,3,4,5};//非法声明
写法是错误的。
这里所谓的静态和动态是相对于程序运行而言的,静态在程序编译时就初始化好了的,动态初始化是在程序运行时才开始动态分配内存空间。
3.数组的长度:数组名称.length
int length = arr.length;
4.数组的索引:0~length-1
5.数组的遍历:一般使用循环for和for-each进行遍历
int[] arr = new int[]{20,18,7,9,12,11};
//使用for循环
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
//使用for-each循环
for(int i:arr){
System.out.println(i);
}
6.冒泡排序法:使用冒泡排序法对数据进行排序
规则:挨着的俩个元素进行比较如果前一个元素大于后一个元素(升序),就进行交换。
int[] arr = new int[]{20,18,7,9,12,11};
int length = arr.length;
int temp = 0;//中间变量
//外层循环,决定一共走几次
for(int i=0;i<length-1;i++){
//内层循环,对元素进行逐个比较
for(int j=0;j<length-i-1;j++){
//如果前一个元素大于后一个元素,进行交换
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
7.多维数组:多维数组可以看成数组的数组,比如二维数组就可以看成一个特殊的一维数组,其中每一个元素都为一位数组。
//二维数组
int[][] arr = new int[][]{{7,12,20},{9,11,18}};
//使用经典for循环进行遍历
System.out.println(arr.length);
System.out.println(arr[0].length);
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println("arr["+i+"]["+j+"]:"+arr[i][j]);
}
}
8.Arrays类
java.util.Arrays提供了许多操作数组的静态方法;
常用的有:sort,fill,toString,equals
1.sort(int[] arr)
对指定的int型数组按照数字升序进行排序,该排序算法是一个经过调优的快速排序法。
2.fill(int[] arr,int fromIndex,int toIndex,int num)
将指定的int值分配给指定的int型数组指定范围中的每个元素,填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括)。(如果fromIndex==toIndex,则填充范围为空)
3.toString(int[] a)
返回支付in个数组内容的字符表示形式。字符串表示格式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符“, ”(逗号加空格)分隔。这额元素通过String,valueOf(int)转换为字符串。如果a为null,返回“null”;
4.equals(int[] arr1,int arr2)
如果俩个指定的int类型数组彼此相等,则返回true。如果俩个数组包含相同数量的元素,并且俩个数组中的所有相对应的元素是相等的,则认为这俩个数组是相等的。
//Arrays类
int i = 10;
int[] arr = new int[]{20,18,7,9,12,11};
Arrays.fill(arr,2,4,i);
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
结果为: [20, 18, 10, 10, 12, 11]
[10, 10, 11, 12, 18, 20]