数组

数组(Array):是有序的元素序列,数组只是一个存储数同类数据的容器。  若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下表变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。

数组具有2个特点:

  1.  数组中的元素具有相同的数据类型。
  2.  数组的容量是确定的。---创建数组的时候确定其容量。

数组定义

数组的定义格式:

格式一: 数据类型[ ] 变量名

例如: int[] array 含义:定义一个整型数组,数组的名字叫array。

格式二: 数据类型 变量名[ ]

例如: int array[] 含义:定义一个整型数组,数组的名字叫array。

静态初始化

静态初始化:初始化数组时,人为指定每个元素的值。

格式一:

数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,...};

格式一示例: int[] arrary1 = new int[]{3, 4, 4, 3, 2, 4, 3, 4, 3, 3};

上述代码定义了一个int数组,数组名是array1,数组中包含10个int数据。它们的初始值不再是系统默认给的0,而是我们人为指定的初始值。

等号左边: 

  • int 表示数据元素是int类型。
  • [] 表示这是一个数组。
  • array1是数组名,即变量名。

等号右边:

  •  new 为数组申请堆内存空间。申请的内存空间是连续的,内存空间的大小取决于元素类型和 元素个数。
  •  int 表示数组中的元素是 int类型。
  •  [] 表示这是一个数组。-----注意不要写元素个数。
  •  {3, 4, 4, 3, 2, 4, 3, 4, 3, 3} 表示数组中每个元素的初始值。大括号中写了几个值,数组的元素个数就是几。

格式二:

-----格式二是格式1的简化格式,通常使用这种格式。

数据类型[] 变量名 = {数据1, 数据2, 数据3,...};

格式二示例:int [ ] arrary1={20,29,12,36,34};

格式二定义的数组和格式一含义一样,只是格式一的简化形式。

动态初始化

int [ ] array2= new int [10];

动态初始化格式: 数据类型[] 变量名 = new 数据类型[数组长度];

上述代码定义了一个int类型的数组,数组名是array2,数组的元素个数是10,每个元素都是int类 型,每个元素的初始值是0。

等号左边:  

  • int 表示数组中的元素是int类型。
  •  [] 表示这是一个数组。
  • array2是数组名称,即变量名。

等号右边:

  • new 为数组申请堆区内存空间。申请的内存空间是连续的,内存空间的大小取决于元素类型和元素个数。
  • int 表示数组中的元素是int类型。
  •  []表示是一个数组,[10]表示数组能容纳10个数据。
  •  因为是动态初始化,系统为每个int元素分配的初始值是0。

数组下标最大为数组长度减一(length-1);

Java基础——数组的简单了解_数组

查看数组中特定位置的值(第三个元素,下标为2)

int i =arrary1 [2];

即定义一个变量,将数组该特定位置赋值。

system.out.println(i);

修改数组中下标为2的值 重新赋值

array [2]=13;

数组遍历

 数组的遍历:指的是获取数组中的每个元素。

public class Demo01 {
	public static void main(String[] args) {
		int []a= {1,5,21,33,22};
		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]);
	}
}

Java基础——数组的简单了解_数据_02

上述代码的作用就是遍历并打印每个数组元素的值。这段代码虽然能达到遍历的效果,但是代码质量不 高,如果数组有100万条数据,输出语句需要写100万行。

通过观察上述代码,你会发现明显的规律:每条打印语句唯一的区别就是数组的下标不同。下标从0开 始,每次下标增1,直到数组个数-1。因此可以使用for循环对数组进行遍历。

public class Demo01 {
	public static void main(String[] args) {
		int []a= {1,5,21,33,22};
		for(int i=0;i<5;i++) {
			System.out.println(a[i]);
		}
	}
}

Java基础——数组的简单了解_数组_03

上面的代码就是简化之后的数组遍历代码。仔细观察不难发现,i 的初始值 0,可以对应数组第 1 个元 素的下标0,每循环一次,执行一次 i++, 可以让 i 的值增 1,这样能对应数组的每一个下标。直到 i 的 值达到数组元素个数-1,即 i < 数组元素个数。

数组元素个数

由于数组元素个数这么重要,所以Java提供了获取数组元素个数的的方式。

格式:数组名.length

示例:a.length 鉴于此,上述代码可以进一步优化。

public class Demo01 {
	public static void main(String[] args) {
		int []a= {1,5,21,33,22};
		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
	}
}

Java基础——数组的简单了解_数据_04

数组遍历的通用格式

因为每个数组的元素个数,都可以通过数组名.length获得,所以任意一个数组的遍历都可以写成如下 形式:

public class Demo01 {
	public static void main(String[] args) {
		数据类型 []数组名= {同类型值};
		for(int i=0;i<数组名.length;i++) {
			System.out.println(数组名[i]);
		}
	}
}

Java基础——数组的简单了解_数组_05

数组最值

public class Demo02 {
	public static void main(String[] args) {
		int []array= {1,30,20,10,5,34,21};
        //求数组最大值
		int max = array[0];
		int maxindex=0;	
		for(int i=1;i<array.length;i++) {
			if(max<array[i]) {
				max=array[i];
				maxindex=i;
			}
		}
		System.out.println("数组中最大值为:"+max);
		System.out.println("数组中最大值下标为:"+maxindex);
		
		//求数组最小值
		int min =array[array.length-1];  //因为是从左到右比较,这样可以防止第一个元素为最小值
		int minindex=0;
		for(int i=0;i<array.length;i++) {
			if(min>array[i]) {
				min=array[i];
				minindex=i;
			}
		}
		System.out.println("数组中最小值为:"+min);
		System.out.println("数组中最小值下标为:"+minindex);
	}
}

Java基础——数组的简单了解_数据_06