数组的相关知识(Java)

66 阅读3分钟

一、数组的概念

1、概念:一组连续的存储空间,存储多个相同数据类型的值。

2、特点:(1)类型相同;(2)长度固定。

二、数组的创建与组成

1、数组的创建

(1)先声明、再分配空间:

        数据类型[] 数组名;

        数组名 = new 数据类型[长度];

public class TestCreate{
    public static void main(String[] args){
        int[] array1;
        array1 = new int[5];
    }




}

(2)声明并分配空间:

数据类型[] 数组名= new 数据类型[长度];

public class TestArrayCreate{
    public static void main(String[] args){
        int[] a = new int[5];    
}//声明int数组类型变量,定义变量名为a;并为其分配长度为5的连续空间。

}

(3)声明并赋值(繁):

数据类型[] 数组名 = new 数据类型[]{value1,value2,…};

public class TestCreate{
    public static void main(String[] args){
    int[] array2= new int[]{1,2,3};    //int[]中不用写长度
    }


}

(4)声明并赋值(简)

数据类型[] 数组名= {value1,value2,…};//显示初始化,不可换行

public class testCreate{
    public static void main(String[] args){
        int[] array3= {1,2,3};
    }



}

注:常用第(2)、(3)种

2、数组的组成

数组元素元素1元素2元素3元素4元素5
下标/索引01234

(1)数组中的每个数据格被称为“数组元素”;

(2)对每个元素进行赋值或取值的操作被称为“元素的访问”;

(3)访问元素时,需要使用“下标”(从0开始,依次加一,自动生成);

(4)访问语法:数组名[下标];

三、数组的赋值与取值

赋值:数组名[下标] = 值;

取值:数组名[下标]

public class TestCreateArray{
    public static void main(String[] args){
        int[] a=new int[5];    //创建数组
        a[0]=5;    //依次赋值
        a[1]=3;
        a[2]=4;
        a[3]=1;
        a[4]=6;
        System.out.println(a[0]);    //依次取值
        System.out.println(a[1]);
        System.out.println(a[2]);
        System.out.println(a[3]);
        System.out.println(a[4]);

    }


}

注意:(1)有效下标范围:0~数组长度-1;(2)若访问无效下标,会导致数组下标越界,系统抛出:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:无效下标。

 四、数组的遍历

从头至尾,逐一对数组的每个元素进行访问

public class TestCreateArray{
    public static void main(String[] args){
        int[] a=new int[5];    //创建数组
        a[0]=5;    //依次赋值
        a[1]=3;
        a[2]=4;
        a[3]=1;
        a[4]=6;
        System.out.println(a[0]);    //依次取值
        System.out.println(a[1]);
        System.out.println(a[2]);
        System.out.println(a[3]);
        System.out.println(a[4]);

        for(int i=0;i<=4;i++){    //初始i取0,循环5次
            System.out.println(a[i]);
        }

        /*
            for(int i=0;i<a.length;i++){    //动态获取数组长度使用:数组名.length
                System.out.println(a[i]);
                }
        */
    }


}

五、数组元素的默认值

1、在没有为数组元素赋值的情况下,依旧可以正确访问;

2、各类型数组默认值:

整数小数字符布尔其他
00.0\u0000falsenull

六、实际应用

1、统计数组中元素的平均值

给定一个·整数数组,统计数组中所有元素的平均值

public class TestAvgGet{
    public static void main(String[] args){
        int[] num=new int[]{34,56,23,77,45};
        int sum=0;
        for(int i=0;i<num.length;i++){
            sum+=num[i];
        }
        double avg=sum/num.length;
        System.out.println(avg);
    }

}

2、查找数组中的元素是否存在

给定一个整数数组,读入一个整数n,如果n在数组中存在,输出其下标,不存在则输出-1

import java.util.Scanner;
public class TestSearchNum{
	public static void main(String[] args){
		int[] num=new int[]{1,4,67,34,99,2,5,75,56};
		Scanner input=new Scanner(System.in );
		System.out.println("请输入一个整数:");
		int n = input.nextInt();
		int index=-1;	//代表n不在数组中
		for(int i=0;i<num.length;i++){		//循环查找
			if(n==num[i]){
				index=i;	//改变index,代表n所出现的下标
				break;
			}		
				}
				System.out.println(index);
	}
}

3、数组的排序

(1)JDK排序:java.util.Arrays.sort(数组名);        //JDK提供,升序排序

import java.util.Arrays;//导包
public class TestSort{
	public static void main(String[] args){
		int[] num=new int[]{4,2,3,6,5,1};
		Arrays.sort(num);
		for(int i=0;i<num.length;i++){
			System.out.println(num[i]);
		}
	}
}

(2)降序排序

import java.util.Arrays;
public class TestSort{
	public static void main(String[] args){
		int[] num=new int[]{4,2,3,6,5,1};
		//先升序
		Arrays.sort(num);
		/*for(int i=0;i<num.length;i++){
			System.out.println(num[i]);
		}
		*/
		//再降序
		for(int i=0;i<num.length/2;i++){
			int s=num[i];
			num[i]=num[num.length-1-i];
			num[num.length-1-i]=s;
		}
		for(int i=0;i<num.length;i++){
			System.out.println(num[i]);
		}
	}
}