Java语言中,数组时一种最简单的复合数据类型,通过数组名加下标来使用数组中的数据。字符串在程序设计中使用非常频繁,Java使用java.lang包中的String类或StringBuffer类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。
Java中的数组
数组是一种用来分组管理数据的简单且功能强大的语言结构。借助数组可以使用一个变量名,存储多个可独立访问的值。数组实际是一个值列表,每个值存放数组中的一个特定的并且编了号的位置。Java的数组,下标(索引)从0开始。
数组可以是一维或多维的,支持“矩阵”数组也支持“不规则”数组。数组是引用类型,所以声明一个数组变量只是为此数组的引用设置了空间。数组实例的创建时通过数组初始化程序和数组创建表达式。一维数组是最普通的类型,实际编程中二维数组的使用也比较普遍。在实际的编程中,使用数组可以避免使用一些复杂的难于掌握的数据结构,让程序代码简单明了,使程序员编写代码更加容易。
一维数组
数组时相同类型的数据按顺序组成的一种复合数据类型,数组中的每个元素都具有相同的数组名,元素是根据数组的下标来确定的。数组有一维数组和多维数组。使用数组之前要先进行声明,就像使用变量一样。
一维数组是指一个线性的数据序列,例如:a[0],a[1]...a[x]。
1.数组声明
数组在使用之前必须首先声明。数组的声明涉及数组的名称、数组包含的元素和数据类型。声明的格式有如下两种:
格式1:
<span style="font-size:18px;"> 数组元素类型 数组名称[];</span>
格式2:
<span style="font-size:18px;"> 数组元素类型[] 数组名称</span>
例如·:
<span style="font-size:18px;"> byte score[];
int []number;</span>
数组score中的元素类型是byte,数组number中的元素类型是int。
当然,数组元素类型不仅仅是java中的基本数据类型,还可以是引用类型。假设有一个定义的类Student,那么可以将数组元素类型声明为Student。例如:
<span style="font-size:18px;"> Student mystudent[];</span>
2.创建数组
仅仅被声明的数组是不能使用的,因为此时数组并没有被系统分配内存空间。可以看到,在声明数组时,数组的元素并没有确定,即[]是空的,也就是数组的长度还没有确定,当然系统无法对它分配空间,因此,声明之后,还必须为数组分配内存空间和初始化。格式如下:
<span style="font-size:18px;">score =new byte [10];</span>
注意:
<span style="font-size:18px;"> 数组的声明和创建可以一起完成,格式如下:
数组元素类型 数组名称 []=new 数组元素类型[元素个数];
例如:
byte score[]=new byte [10];</span>
3.数组元素的赋值
一维数组可以通过下标来对数组进行赋值。需要提醒的是,下标是从0开始的,上例中的数组元素为score[0],score[1]…score[9]。Java中不允许数组越界,即不能超出下标范围,否则将发生异常。例如:
<span style="font-size:18px;">score[0]=23;//正常赋值
score[10]=13;//越界出现异常</span>
4.数组的使用
前面提到要使用数组时,首先要声明数组,然后创建再赋值,就可以使用数组了,在实际编程中,有时要根据需要往往对上述三个过程进行简单的处理。例如:
<span style="font-size:18px;"> byte score[]={1,2,3,4,5,6,7,8,9,10};</span>
此条语句相当于:
byte score[]=new byte [10];
然后对每一个元素赋值,例如:
score[0]=1,score[1]=2,……score[9]=10;
二维数组
二维数组是具有两个下标的数组,可以用来表示如行列式、矩阵和二维表等。使用二维数组和一维数组一样,要先声明,声明格式和一维数组几乎是一样的,不同的是它有两个下标。格式如下:
格式1:
数组元素类型 数组名称[][];
格式2:
数组元素类型[][] 数组名称;
二维数组的创建和一维数组是一样的。
说明:
二维数组有两个下标:行下标和列下标。数组名后的第一个方括号[]中的整数值是行下标,第二个方括号[]中的整数值是列下标。通过指定行下标和列下标可以访问数组元素,进而可以遍历二维数组的每一个元素。例如:b[0][0]表示访问数组b第1行和第1列的元素值,b[0][1]表示访问第1行第2列的元素值。
多维数组
数组可以是一维数组、二维数组、三维数组,甚至是更高维的数组。二维数组可以形象的表示一个表,三维数组可以表示一个立方体。实际上,在面向对象编程中,很少使用二维以上的数组。这里举一个三维数组的例子。例如某个宾馆有8层楼,每层楼的客房数量不相等,每个房间中实际住宿的客人的数量可能是1~3之间的值。如果要存储客人与所入住的房间的关系,就可以使用三维数组。第一个下标表示所在楼层,第二个下标表示所在房间号,第三个下标表示同一个房间中客人的编号。
Arrays数组工具类的用法
除了通过下标访问数组元素外,更多的时候,还需要对数组进行其他操作,例如,对数组元素进行排序,遍历整个数组等。JDK1.2开始,java.util包下就有一个Arrays的类提供的sort方法,此方法提供了大量的重载形式,下面是对整型数组排序的声明:
public static void sort(int []a)
public static void sort(int []a,int fromIndex,int toIndex)
排序的sort方法,是静态方法,即可以通过“类名.静态方法名”的语法格式进行调用。
java.util.Arrays的一些常用方法包括:
equals();比较两个数组是否相等,两个数组的元素数目相同,并且对于位置
fill();向数组中填充数据。
sort();把数组中的元素按照升序排列。
binarySearch();按照二叉查找算法,查找数组中的值与给定数据相同的元素。在调用此方法前,必须保证数组中的元素已经按照升序排列。
toString();返回数组中所以元素信息的字符串。
import java.util.*;
public class _a
{
public static void main(String[] args)
{
int a[]={1,2,3,4,5};
int b[]={1,2,3,4,5};
System.out.println(Arrays.equals(a,b));
}
}
注意:
java.util.Arrays类的方法都提供了重载的形式,以equal为例:
public static boolean equals(boolean[] a,boolean[] a2)
public static boolean equals(char []a,char[] a2)
public static boolean euqls(byte[] a,byte[] a2)
public static boolean euqls(short[] a,short[] a2)
public static boolean euqls(int[] a,int[] a2)
public static boolean euqls(long[] a,long[] a2)
public static boolean euqls(float[] a,float[] a2)
public static boolean euqls(double[] a,double[] a2)
下面是一个代码片段,对一个整形数组进行排序,然后打印出排序后的数组元素:
int iArr[]={213,1251057,1107,610,2008};
java.util.Arrays.sort(iArr);
for(int i=0;i<iArr.length;i++)
System.out.print(iArr[i]+" ");
上述代码片段执行后,结果如下:
213 610 1107 2008 1251057