5 数组与字符串
    我们在前面学习的整形、字符型等都是基本数据类型,通过一个变量表示一个数据,这种变量称为简单变量。在实际应用中,经常需要处理具有相同性质的一批数据。例如要处理100个学生的考试成绩,如果要使用简单变量,将需要100个变量,极不方便。为此,在Java中,除简单变量外,还引进了数组,即用一个变量表示一组相同性质的数据。数组必须先经过声明和初始化后才能使用。
5.1 一维数组
    数组是用一个变量名表示一组数据,每个数据称为数组元素,各元素通过下标来区分。如果用一个下标就能确定数组中的不同元素,这种数组称为一维数组,否则称为多维数组。
5.1.1 一维数组的声明
    声明一个数组就是要确定数组名、数组的维数和数组元素的数据类型。
    一维数组声明的格式为:
    类型标识符  数组名【】
   
    类型标识符【】  数组名
    类型标识符指定每个元素的数据类型,如int表明数组中的每个元素都是整型数。
    说明:
(1) 数组名的命名方法同简单变量,可以是任意合法的标识符。取名是最好符合“见名知意”的原则。
(2) 类型标识符可以是任意的基本类型,如intlongfloatdouble,也可以是类或接口。
例如,要表示学生的成绩(整数),可以声明元素的数据类型为整数的数组score,其声明如下:
int  score【】
    该声明表示数组的名字为score,每个元素为整型数。
    要表示学生的体重(浮点数),可以声明元素的数据类型为float的数组weight,其声明如下:
    float【】 weight
5.1.2 一维数组的初始化
    声明一个数组仅为数组指定了数组名和元素的数据类型,并未指定数组的元素个数,系统无法为数组分配存储空间。要让系统为数组分配存储空间,必须指出数组元素的个数,该工作在数组初始化时进行。数组经过初始化后,其元素的个数、所占用的存储空间就决定下来。数组的初始化工作可以通过new操作符完成,也可以通过给元素赋初始值进行。
1. new初始化数组
new关键字初始化数组,只指定数组元素的个数,为数组分配存储空间,并不给数组元素赋初始值。通过new关键字初始化数组有两种:先声明数组再初始化和声明的同时进行初始化。
(1) 先声明数组再初始化
先声明数组再初始化是通过两条语句来实现的,第一条语句是声明数组,第二条语句用new关键字初始化数组。
new关键字初始化数组的格式如下:
数组名=new 类型标识符【元素个数】
元素个数通过整型常量来表示。
例如:要表示10个学生的成绩(整数),可以先声明元素的数据类型为整数score,再用new关键字初始化该数组。
int  score[]
score=new int[10]
数组中各元素通过下标来区分,下标的最小值为0,最大值比元素个数少1。对于前面初始
化的数组score,其10个元素分别为score[0]score[2]score[3],···,score[9]。系统为数组的10个元素分配存储空间,形式如表5-1所示:
5-1 一维数组
score[0]
score[1]
score[2]
score[3]
score[4]
score[5]
score[6]
score[7]
score[8]
score[9]
各元素的元素空间是连续的。
初始化数组后,如果想知道其元素个数,可以通过属性length获得。其格式为:
数组名·length
例如,对于前面初始化的数组scoreweightscore·lengthweight·length的值分别为1015.
数组下标可以使用变量,所以数组和循环语句结合使用,使得程序书写简洁,操作方便。
例如,要计算100个学生的平均成绩,可以使用以下的程序段。
float sum;
int i;
int score[];
score=new int[100];        //输入数组各元素的值
sum=0;
for(i=0;i<100;i++)
    sum=sum+score[i];
sum=sum/100;
(2) 声明的同时进行初始化
可以用一条语句声明并初始化数组,即将上面的两条语句合并为一条语句。其格式如下:
类型标识符[]  数组名=new 类型标识符[元素个数]
例如,要表示10个学生的学号,可以按以下方法声明并初始化数组no
int  no[]=new  int[10];
2. 赋初值初始化数组
可以在声明数组的同时,给数组元素赋初值。所赋初值的个数决定数组元素的数目。其格式如下:
类型标识符  数组名={初值表}
初值表是用逗号隔开的初始值。
例如:int score[]={65,34,78,81,56,92,56,87,90,77};
该语句声明了一个数组score,其元素类型为int,因为初始值的各数为10,所以数组有10个元素,并且10个元素score[0]score[1]score[2],···,score[9]的初始值分别为65,34,78,···,77,如同5-1所示。
score[0]
score[1]
score[2]
score[3]
score[4]
score[5]
score[6]
score[7]
score[8]
score[9]
65
34
78
81
56
92
56
87
90
77
5-1 初始化数组
5.2 多维数组
    日常工作中涉及到许多数据是由若干行和若干列所组成,例如行列式、矩阵、二维表格等待,为了描述和处理其中的一个数据,需要两个下标,即行标和列标。有些情况下,可以需要三个或多个下标,如描述三维空间中各点的温度需要三个下标。为了解决这一类问题,在Java中可以使用多维数组,即每个元素需要两个或多个下标来描述数组。正像一维数组,多维数组在使用前也必须进行声明和初始化,且声明和初始化的方法于一维数组类似。下面以二维数组为例,说明多维数组的使用方法,三维或三维以上的数组用法类似。
5.2.1 二维数组的声明
    二维数组的声明方法与一维数组类似,只是要给出两队方括号。二维数组声明形式如下:
    类型标识符  数组名[][]
    类型标识符[][]  数组名
    其中的类型标识符表示每个元素的数据类型
    声明:
(1) 数组名的命名方法同简单变量,可以是任意合法的标识符。取名时最好符号“见名知意”的原则。
(2) 类型标识符可以是任意的基本类型,如intlongfloatdouble,也可以是类或接口。
(3) 对于多维数组,只需在数组名或类型标识符的后面放置多对方括号。
实数上,很少用到三维或更高维数的数组。
例如,要表示每个数据为整型数的行列式,可以声明如下二维数组:
int  a[][];
5.2.2 二维数组的初始化
    声明一个二维数组仅为数组指定了数组名和元素的数据类型,并未指定数组的行数和列数,系统无法为数组分配存储空间。要让系统为数组分配存储空间,必须指出数组的行数和列数,该工作在数组初始化时进行。二维数组经过初始化后,其元素的个数、所占的存储空间就确定下来。数组的初始化可以通过new操作符完成,也可以通过给元素赋初值进行。
1. new初始化二维数组
new关键字初始化二维数组,只指定数组行数和列数,为数组分配存储空间,并不给数组元素赋初始值。通过new关键字初始化数组有两种方式:先声明数组再初始化和在声明的同时进行初始化。
(1) 先声明数组再初始化
先声明数组再初始化是通过两条语句来实现的,第一条语句声明数组,第二条语句用new关键字初始化数组。
new关键字初始化数组的格式如下:
数组名=new 类型标识符【行数】【列数】
行数和列数通过整型常量来表示。元素的个数等于行数与列数的乘积。
例如,要表示每个数据为整型数的三行、四列的行列式,可以先声明元素的数据类型为整型的数组a,再用new关键字初始化该数组。
int  a【】【】;
a=new int3】【4】;
数组中各元素通过两个下标来区分,每个下标的最小值为0,最大值分别比行数和列数少1.对于前面初始化的数组a,其12个元素分别为a0】【0】,a0】【1】,a0】【2】,a0】【3】,a1】【0】,a1】【1】,···a2】【3】。系统为该数组的12个元素分配存储空间,形式如表5-2所示。
5-2 二维数组
a0】【0        a0】【1      a0】【2        a0】【3
a1】【0        a1】【1      a1】【2        a1】【3
a2java定义一维数组并赋值】【0        a2】【1      a2】【2        a2】【3
各元素的存储空间是连续的。
初始化数组后,如果想知道行数和列数,可以通过属性length获得。
数组名·length
获取数组列数的格式为:
数组名【行标】·length
二维数组的下标可以使用变量,所以二维数组和循环语句结合使用,使得程序书写简洁,操作方便。
Java中,二维数组是作为一维数组来处理的,只是其每个元素本身又是个一维数组。例
如,前面初始化的数组a可以看做一维数组,共有3个元素a0】、a1】和a2】,只不过每个元素本身又是一个一维数组。a0】的4个元素分别是a0】【0】、a0】【1】、a0】【2】和a0】【3】,a1】的4个元素分别是a1】【0】、a1】【1】、a1】【2】和a1】【3】,a2】的4个元素分别是a2】【0】、a2】【1】、a2】【2】和a2】【3】。
由于Java将二维数组当做一维数组来处理,所以在进行初始化的时候,可以各行单独进行,也允许各行的元素个数不同。
例如,要表示实型数的二行、三行行列式b,可以按照以下方式进行声明和初始化:
float【】【】  b
b=new  int2】【】;            //b初始化为两行二维数组
b0=new  int3】;        //b0】初始化三个元素
b1=new  int3】;        //b1】初始化三个元素
再例如,要使用具有三行元素,第一行1个元素、第二行3个元素、第三行5个元素的二维数组c,可以按照以下方式进行声明和初始化:
int  c【】【】;
c=new  int3】【】;            //c初始化为三行二维数组
for(int i=0;i<3;i++)
ci=new  int2·i+1】;
(2) 赋初值初始化数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。