6.1 什么是数组
数组是一种数据类型(引用类型),数组是相同数据类型元素的集合
6.2 数组的声明(定义)
数据类型 数组名 = new 数据类型[元素个数]
案例:
//声明整型数组arr,包含4个元素,每个元素都是int型,默认值为0
int[] arr = new int[4];
//声明浮点型数组d,包含20个元素,每个元素都是double型,默认值为0.0
double[] d = new double[20];
//声明布尔型数组b,包含26个元素,每个元素都是boolean型,默认值为false
boolean[] b = new boolean[26];
6.3 数组的初始化
第一次给变量赋值
案例:
int[] arr = new int[4];//0,0,0,0
int[] arr = {1,4,5,7};
int[] arr = new int[]{1,4,5,7};//1,4,5,7
int[] arr;
arr = {1,4,5,7};//编译错误,此方式只能声明同时初始化
arr = new int[]{1,4,5,7};//正确
6.4 数组的访问
6.4.1 获取数组长度
通过(数组名.length)可以获取数组长度(元素的个数)
int[] arr = new int[3];
System.out.println(arr.length);
6.4.2访问数组中的元素
通过下标/索引来访问数组中的元素,下标从0开始,最大到(数组的长度-1)
注意:运行时不要发生ArrayIndexOutOfBoundsException数组下标越界异常
int arr = new int[3];
arr[0] = 100;//给arr中的第1个元素赋值为100
arr[1] = 200;//给arr中的第2个元素赋值为200
arr[2] = 300;//给arr中的第3个元素赋值为300
arr[3] = 400;//运行时发生---数组下标越界异常
System.out.println(arr[arr.length-1]);//输出arr中最后一个元素的值
6.4.3 数组的遍历
从第一个元素到最后一个元素挨个访问一遍
案例:
int[] arr = new int[10];
for (int i=0;i<arr.length ;i++ )
{//遍历arr数组
arr[i] = 100;//给arr中每个元素赋值为100
System.out.println(arr[i]);//输出每个元素的值
}
6.4.4 数组的排序
6.4.4.1 选择排序
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置知道未排序元素个数为0。
选择排序的步骤:
1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。
3.重复第二步,直到所有元素均排序完毕。
案例1:
public static void main(String[] args) {
int[] arr = {6,8,15,45,96,85,77};
int[] arr1 = new int[7];
for (int i=0;i<arr.length;i++){
for (int j = i+1;j<arr.length;j++){
if (arr[i]<arr[j]){
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
6.4.4.2 冒泡排序
冒泡排序:就是使用循环将数组中的元素按从小到大或从大到小排序
案例:
public static void main(String[] args) {
int[] arr = {6,8,15,45,96,85,77};
//外层循环每循环一次确定一个最大的元素
for (int i = 0;i<arr.length;i++){
//内层循环每循环一次进行一次对比
for (int index=0;index<arr.length-1;index++){
//将当前元素与后一个元素进行比较
if (arr[index]<arr[index+1]){//如果当前元素小于后元素
//互换位置
int temp;
temp = arr[index];
arr[index]=arr[index+1];
arr[index+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
6.4.4.3 利用Arrays.sort()排序
JavaScript中数组的sort()方法主要用于对数组的元素进行排序。其中,sort()方法有一个可选参数,可选升序降序等
案例:
int[] arr = new int[10];
for (int i=0;i<arr.length;i++ )
{
arr[i] = (int)(Math.random()*100);
System.out.println(arr[i]);
}
Arrays.sort(arr);//升序
System.out.println("排序后:");
for (int i=0;i<arr.length;i++ )
{
System.out.println(arr[i];)
}
6.4.5数组的拷贝
6.4.5.1利用循环拷贝
案例:
public static void main(String[] args) {
int [] arr0 = {1,5,9,8,15,4};
int [] arr1 = new int[7];
System.out.println("arr0="+Arrays.toString(arr0));
System.out.println("arr1="+Arrays.toString(arr1));
for (int i=0;i<arr0.length;i++){
for (int j=0;j<=arr0.length;j++){
if (i==j){
arr1[j]=arr0[i];
}
}
}
System.out.println("拷贝后:");
System.out.println("arr0="+Arrays.toString(arr0));
System.out.println("arr1="+Arrays.toString(arr1));
}
6.4.5.2库函数拷贝
6.4.5.2.1 Java中提供了Sys.out.arraycopy()来进行数组的复制
案例:
int[] a = {10,20,30,40,50};
int[] b = new int[6];
//System.arraycopy(源数组,源数组起始下标,目标数组,目标数组起始位置,拷贝长度)灵活性好
System.arraycopy(a,1,b,0,4);
for (int i=0;i<b.length ;i++ ){
System.out.println(b[i]);
}
6.4.5.2.2 Java中提供了Arrays类,其中copyOF()方法可以实现数组赋值,注意需要import Arrays类,同时借助copyOf()方法可以实现数组扩容
案例:
int[] a = {10,20,30,40,50};
int[] b = Arrays.copyOf(a,4);//灵活性差
System.out.println(Arrays.toString(b));
//数组的扩容(创建了一个更大新的数组并将源数组数据复制进去)
a = Arrays.copyOf(a,a.length+1);
System.out.println(Arrays.toString(a));
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置知道未排序元素个数为0。
选择排序的步骤:
1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2>再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。
3>重复第二步,直到所有元素均排序完毕。