Java 第八课:数组

一、
数组是相同数据类型的连续的数据集合,可以用一个统一的名字和不同的ID表示数组中的元素。按照数组的维度可以把数组分一维、二维和多维数组。

一维数组:

1.声明:
	声明数组:
	数据类型[] 数组名; 	| 或是数据类型 数组名[];
	int[] score; | int score[];
	String[] name;	| String name[];
	***注意:声明是不能指定数组长度:
	以下方式是错误的:
	int size[10];***
	
2.分配空间:
	声明数组只是的到了一个存储数据的变量,并没有为数组分配存储空间。在Java中,使用new来分配空间。
	数组名 = new 数据类型[数组长度];
	score = new int[10];
	name = new String[10];
	
3.声明时分配:
	数据类型 数组名 = new 数据类型[数组大小];
	int score = new int [10];
注意:一旦声明了数组的大小,就不能再修改。这里的数组长度也是必需的,不能少。

4.初始化数组:
	1. 使用 new 指定数组大小后进行初始化:
		创建数组之后,元素的值并不确定,需要为每一个数组的元素进行赋值
		type[] array = new type[size];	
		int [] score = new int[2]; 
		score[0] - 90;
		score[1] = 88;
	2.使用 new 指定数组元素的值
		type[] array = new type[value0, value1,......,valuen-1];
		int[] score = new int [90, 88];
	3.直接指定数组元素的值
		type[] array[value0, value1,.....,valuen-1];
		int[] score[90, 88];

二维数组
二维数组可以理解为一个特别一维数组,只是它的换素还是数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组

	1.声明一个二维数组:
	type 数组名[][] | 或是type[][] 数组名;
	int score[][]; | 或是char[][] sex;
	2.初始化二维数组:
		2.1. array=new type[][]{array0,array1, ....., arrayn-1};
		例如:
		int[][] array;
		array = new int[][]{
			{1, 2,3},
			{2,3,4},
		};
		
		2.2 array=new type[][]{new 构造方法(参数列),…};
		    例如:
		    int[][] temp;
			temp=new int [][]
			{
    			{new int(1),new int(2)},{new int(3),new int(4)}
			};
			
		2.3 type[][] array={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};
			例如:
		    int[][] temp={{1,2},{3,4}};

3、多维数组:
参考二维数组

4、数组Array内嵌方法

	1.比较两个数组是否相等:
	相等的条件不仅要求数组元素的个数必须相等,而且要求对应位置的元素也相等
	语法:
		Arrays.equals(Array a, Array b);
		
	2.填充数组:
	填充制定位置数组值
	语法:
		Arrays.fill(Array a, value);			//a: 要填充的数组, value:要填充的值
		
	3.查找指定元素:
	使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。
	语法:
		Arrays.binarySearch(Object[] a,Object key);	
		Arrays.binarySearch(Object[[]a, int startIndex, int stopIndex, Object key) ;
		a: 表示要查找的数组, startIndex: 表示开始索引位置下标;stopIndex: 表示结束索引位置下标; key:表示要查找的值。	

4.数组复制:
	Java实现了4种数组复制的方式:
	Arrays 类的方法:copyof();copyOfRang();
	System类的方法:arraycopy();
	Object类的方法:clone();
	1.Arrays类的方法:
	语法格式:
		Arrays.copyOf(dataType[] srcArray, int length);
	复制时,默认从源数组的第一个元素(索引值为 0)开始复制,目标数组的长度将为 length。如果 length 大于 srcArray.length,则目标数组中采用默认值填充;如果 length 小于 srcArray.length,则复制到第 length 个元素(索引值为 length-1)即止。
**注意:目标数组如果已经存在,将会被重构。**

		Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex);
	srcArray 表示源数组;startIndex 表示开始复制的起始索引,目标数组中将包含起始索引对应的元素,另外,startIndex 必须在 0 到 srcArray.length 之间;endIndex 表示终止索引,目标数组中将不包含终止索引对应的元素,endIndex 必须大于等于 startIndex,可以大于 srcArray.length,如果大于 srcArray.length,则目标数组中使用默认值填充。
**注意:目标数组如果已经存在,将会被重构。**

	2.System类的方法:
	语法格式:
		System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length);
	srcArray 表示源数组;srcIndex 表示源数组中的起始索引;destArray 表示目标数组;destIndex 表示目标数组中的起始索引;length 表示要复制的数组长度。使用此方法复制数组时,length+srcIndex 必须小于等于 srcArray.length,同时 length+destIndex 必须小于等于 destArray.length。
	注意:目标数组必须已经存在,且不会被重构,相当于替换目标数组中的部分元素。

	3.clone类的方法:
	语法格式:
	arrayName.clone();
	clone() 方法的返回值是 Object 类型,要使用强制类型转换为适当的类型.
	注意:目标数组如果已经存在,将会被重构
	static void MyArrayCopy() {
		int i = 0;
		int srcArray[] = {1, 2, 3, 4, 5,};
		int destArray1[] = Arrays.copyOf(srcArray, 8);
		int destArray2[] = Arrays.copyOfRange(srcArray, 1, 8);
		int destArray3[] = new int[5];
		System.arraycopy(srcArray, 0, destArray3, 0, 5);
		int destArray4[] = (int[])srcArray.clone();
		
		for(i = 0; i < destArray1.length; i++)
			System.out.print(destArray1[i] + "\t");
		System.out.println("\n=====================");
		for(i = 0; i < destArray2.length; i++)
			System.out.print(destArray2[i] + "\t");
		System.out.println("\n=====================");
		for(i = 0; i < destArray3.length; i++)
			System.out.print(destArray3[i] + "\t");
		System.out.println("\n=====================");
		for(i = 0; i < destArray4.length; i++)
			System.out.print(destArray4[i] + "\t");
		System.out.println("\n=====================");
	}
	输出结果:
	1	2	3	4	5	0	0	0	
	=====================
	2	3	4	5	0	0	0	
	=====================
	1	2	3	4	5	
	=====================
	1	2	3	4	5	
	=====================
5、数组排序:
		
	import java.util.Arrays;
	语法格式:
	Arrays.sort();

猜你喜欢

转载自blog.csdn.net/qq_39440596/article/details/88414975