一:数组概述
数组是具有相同数据类型的一组数据的集合。例如,球类的集合一一足球、篮球、羽毛球等;电器集合一一电视机、洗衣机、电风扇等。在程序设计中,可以将这些集合称为数组。数组中的每个元素具有相同的数据类型。在 Java 中同样将数组看作一个对象,虽然基本数据类型不是对象,但由基本数据类型组成的数组却是对象。在程序设计中引入数组可以更有效地管理和处理数据。可根据数组的维数将数组分为一维数组、二维数组····。
二:一维数组
1.创建一维数组
数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种形式。
1:先声明,再用new关键字进行内存分配。
数组元素类型 数组名字[];
数组元素类型[] 数组名字;
代码如下:
声明int型数组:int arr[];
分配内存:arr = new int[5]
2:声明的同时为数组分配内存
数组元素的类型 数组名 = new数组元素的类型[数组元素的个数];
代码如下:
int month[] = new int[12]
2.初始化一维数组
数组与基本数据类型一样可以进行初始化,数组的初始化可分别初始化数组里的每个元素。数组的初始化有以下两种方法:
int arr[] = new int[]{1,2,3,5,25}; //第一种初始化方式
int arr2[] = {34,23,12,6}; //第二种初始化方式
3.使用一维数组
实例:
三:二维数组
1.创建二维数组
二维数组可以看作是特殊的一维数组,因此二维数组的创建同样有两种方式
1:先声明,再用new关键字进行内存分配。
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
代码如下:
int a[][];
第一种分配方式是直接为每一维分配内存空间,代码如下:
a = new int[2][4]
第二种内存分配方式是分别为每一维分配内存,代码如下:
a = new int[2][];
a[0] = new int[2];
a[1] = new int[3];
2:声明的同时为数组分配内存
代码如下:
int a = new int[2][4];
2.初始化二维数组
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。语法如下:
type arraynamelll = {value1,value2,...,valuen);
初始化二维数组,代码如下:
int myarr[][] = {{12,0},{45,10}};
int 型二维数组是以 int a 来定义的,所以可以直接给 a[x][y]赋值。例如,给 a[1]的第 2个元素赋值的语句如下:
a[1][1] = 20;
3.使用二维数组
四:数组的基本操作:
1.遍历数组
遍历数组就是获取数组中的每个元素。通常遍历数组都是使用for 循环来实现。
项目中创建 Trap类,在主方法中编写代码,定义二维数组,将二维数组中的元素呈梯形输出,实例代码如下:
在遍历数组时,使用foreach可能会更简单,代码如下:
2.填充替换数组元素
填充替换数组元素数组中的元素定义完成后,可通过 Arrays 类的静态方法0来对数组中的元素进行替换。该方通过各种重载形式可完成对任意类型的数组元素的替换。
1. fill(int[] a,int value)
该方法可将指定的 nt 值分配给 int 型数组的每个元素。语法如下:
fill(int[] a,int value)
例如:
2.fill(int[] a,int fromlndex,int tolndex,int value)
该方法将指定的int值分配给int型数组指定范围内的每个元素。填充的范围从索引 omlndex (包直到索引 tolndex(不包括)。如果 fomindex=toindex,则填充范围为空。语法如下:
fill(int[] a,int fromlndex,int tolndex,int value)
3.对数组进行排序
通过Amas 类的静态方法 sot0可以实现对数组的排序。sort0方法提供了多种重载形式可对任意类型的数组进行升序排序、其中,obsect是指进行排序的数组名称。语法如下:
Aays sort (obyecl)
使用sont0方法将数组排序后输出,代码如下:
4.复制数组
Arrasy类coryOR方法与copyoRange0方法可以实现对数组的复制。copy010方法是复制数组
至型定长度,cpyOfRange0方法则将指定数组的指定长度复制到一个新数组中
1、oopy00方法
该方法提供了多种重载形式,用于满足不同类型散组的复啊。语法如下:
copyOf(art, int meretengah)
代码如下:
2.copyOFRange()方法
该方法同样提供了多种重载形式。语法如下.
copyOfRange(arr, int formindex, int tolndex)
代码如下:
5.查询数组
Amys类的 binaryScarch0方法,可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的素引值binarySearch0方法提供了多种重载形式,用于满足各种类型数组的查覆aryScarch()方法有两种参数类型。
1.binarySearch(Objectl a, Object key)
语法如下:
binarySearch(Object] a, Object key)
代码如下:
五:数组排序算法
1.冒泡排序
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将较小的数往前放、较大数往后放,类似水中气泡往上升的动作,所以称为冒泡排序。
1.基本思想
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到组前面,把较大的元素移动到数组后面《也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。
例如:
2.直接选择排序
直接选择排速拜播序的基本思想是将指定排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值,这是与冒泡排序的区别,不是交换相邻元素,而是把满足条件的元素与指定的排序位置元交赢(如从最后一个元素开始补序),这样排序好的位置逐渐扩大,直至整个数组都变成已排序好的格式。
代码如下:
3.反转排序
顾名思义,反转排序就是以相反的顺序把原有的数组内容重新排序。实现思路就是把数组第一个元素与最后一个元素替换,第二个元素与倒数第二个元素替换,以此类推,直到没有元素替换为止。
代码如下: