Java数组

187 阅读2分钟

数组是相同类型的数据按顺序组成的一种引用数据类型

一维数组

声明

语法格式:

数据类型[] 数组名;

数据类型 数组名[];

数组名的命名要满足标识符和变量的命名规则

创建

语法格式一:先声明后创建

数据类型[] 数组名;

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

语法格式二:声明的同时创建数组

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

注意:数组长度必须指定

数组在内存中的存储

数组会被分配连续的内存空间,数组名是一个对象,指向数组的首个元素,整型数组元素默认值为0,数组本身是一个对象

所有对象数组(如String类型)在创建时默认值都为null

float数组默认值都为0.0

初始化

声明数组的同时给数组赋值

数组的长度就是初始化时所给数组元素的个数

int[] arr={1,2,3,4,5};

元素的引用

语法格式:数组名[下标];(整体看作是一个变量)

注意:下标从0开始

长度

属性length表示数组的长度,如a.length

数组的应用

1.“floatArray数组的最后一个元素为:”+floatArray[floatArray.length-1]

                int[] intArray; 
		intArray=new int[5];
		//循环为整型数组赋值
		for(int i=0;i<5;i++){
			intArray[i]=i+1;
		}
		//循环输出整型数组中的元素
		for(int i=0;i<5;i++){
			System.out.print(intArray[i]+"  ");
		}

3.数组下标的越界

报异常(Exception),编译时正常,运行时异常

ArrayIndexOutOfBoundsException

                //求整型数组的累加和
		//定义整型数组
		int[] a=new int[5];
		Scanner sc=new Scanner(System.in);
		//从键盘接收数据,为数组元素赋值
		for(int i=0;i<a.length;i++){
			System.out.println("请输入第"+(i+1)+"个元素:");
			a[i]=sc.nextInt();
		}
		System.out.println("数组元素的内容为:");
		for(int i=0;i<a.length;i++){
			System.out.print(a[i]+"  ");
		}
                //求数组元素的累加和
		int sum=0;
		for(int i=0;i<a.length;i++){
			sum=sum+a[i];
		}
		System.out.println("数组元素的累加和为:"+sum);

5.

                //求数组元素的最大值
		//先假设首个元素为最大值
		int[] a={34,23,78,56,31};
		int max=a[0];
		for(int i=1;i<a.length;i++){
			if(max<a[i]){
				max=a[i];			
			}
		}
		System.out.println(max);	

增强型for循环(又叫foreach循环)

主要用于数组或集合的遍历

foreach循环应用:

int[] arr={1,2,3,4,5};

for(int n:arr)

   System.out.println(n);

终止条件:将数组遍历一遍

如何对变量a,b的值进行交换?

int a=3,b=5;

int temp;

temp=a;a=b;b=temp;

冒泡排序

对一组整数按照从小到大的顺序进行排序

                //冒泡排序
		int[] a={34,53,12,32,56,17};
		System.out.println("排序前的数组元素为:");
		for(int n:a){
			System.out.print(n+"  ");
		}
		System.out.println();
		int temp;
		for(int i=0;i<a.length-1;i++){
			//内重循环控制每趟排序
			for(int j=0;j<a.length-i-1;j++){
				//凑第一次循环的比较次数,然后依此递减
				if(a[j]>a[j+1]){
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		System.out.println("从小到大排序后的数组元素为:");
	
	for(int n:a){
		System.out.print(n+"  ");
	}

二维数组

声明和创建

                //二维数组的声明
		//三种形式
		//声明int类型的二维数组
		int[][] intArray;
		//声明float类型的二维数组
		float floatArray[][];
		//声明double类型的二维数组
		double[] doubleArray[];
                //创建一个三行三列的int类型的数组
		intArray=new int[3][3];
                //声明数组的同时进行创建
		char[][] ch=new char[3][5];
		//创建float类型的数组时,只指定行数
		floatArray=new float[3][];

System.out.println(floatArray[0][0]);会产生空指针异常

floatArray[0]=new float[3];//第一行有三列

floatArray[1]=new float[4];//第二行有四列

System.out.println(floatArray[0][3]);//数组下标越界

二维数组认为每一行都是一个一维数组

初始化

                //二维数组的初始化
		int[][] num={{1,2,3},{4,5,6},{7,8,9}};
		System.out.println("num数组的行数为"+num.length);
		System.out.println("num数组的列数为"+num[0].length);

2.

                //循环输出二维数组的内容
		for(int i=0;i<num.length;i++){
			for(int j=0;j<num[i].length;j++){
				System.out.print(num[i][j]+"  ");
			}
			System.out.println();
		}