数组就是一个变量,,用于将相同类型的数据存储在内存中,数组的每一个数据类型都属于同一个数据类型,例如:全班30个学生都是整型,就可以存储在一个整型数组中。
数组的基本要素:
标识符:和变量一样数组也需要标识符,用于区分不同数组。
数组元素:
有标识符后,要向数组中存放数据,这些数据就称为数组元素。
数组下标:
在数组中,为了正确地得到数组元素,需要对它们进行编号,这样计算机才能根据编号取存取,而这个编号称为数组下标。
元素类型:
存储在数组中的数组元素为同一数据类型。
注意:
每个数组只有一个名称即只有一个标识符;数组元素在数组里顺序排列编号,该编号即为数组下标,它标明了元素在数组中的位置,第一个元素的编号规定为0,后面的数组的下标依次为1,2,3,4等。
数组的大小是数组可容纳元素的最大数量,定义一个数组的同时也定义了它的大小,如果一个数组已满,但是还继续向数组中存储数据的话,程序就会出错,这称为数组越界。例如:数组下标最大为3,如果数组的下标超过此大小,程序就会因为错误而终止。
数组的使用步骤:
1.声明数组:
语法格式:数据类型[]数组名;或者 数据类型 数组名[]
例如:
int[]score;
int score[];
这两种方式都可声明数组,数组名可以是任意的合法字符。
2.分配空间:
声明数组后,但并不会为数组元素分配空间,此时还不能使用数组,为数组分配内存空间,这样数组的每一个元素才能对应一个存储单元。
语法格式:
数组名=new 数据类型[数据长度];
例如:
score=new int[86];
数据类型[]=数组名=new 数据类型[数据长度];
例如:
int []=score=new int[5];
3.赋值:
分配空间后就可以在数组里面放置数据了
语法格式:
数组名[下标值];
例如:score[0]=98;
score[1]=56;
score[2]=78;
可以利用循环来为数组赋值
例如:
Scanner input=new Scanner(System.in); for(int i=0;i<30;i++){ score[i]=input.nextInt();//从控制台接受键盘输入进行循环赋值 }
数组和循环往往结合在一起使用,可以极大效率的简化代码,提高程序效率,通常使用for循环遍历数组或者给数组元素赋值。
Java中的另一种创建数组的方式如下:
数组类型[]数组名={值1,值2,值3,.....,值n};
例如:
int[] scores={60,61,78,98,25};等价于int[]scores=new int[]{60,61,78,98,25};
注意的是:直接创建并赋值的方式一般在数组元素比较少的情况下使用,它必须一并完成,如:int[]score;
score={60,20,56,45};这就是错误的创建方式
案例如下:
//使用数组计算平均分 int[]scores=new int[5];//定义成绩数组 int sum=0;//定义成绩总和 Scanner input=new Scanner(System.in); System.out.println("请输入5位同学的成绩:"); for(int i=0;i数组使用注意事项:
1.数组已经创建,其长度是不可变的,如果越界访问(即数组下标超过0至数组长度-1的范围),程序会报错,因此当使用数组长度时我们使用如下格式:
数组名.length;
例如:上面的例子中循环变量i小于数组长度,我们可写成下面的格式
i
2.数组下标从0开始,而非1,如果访问数组元素时指定下标小于0,或者大于等于数组长度,都将出现下标越界异常。
3.如果定义的数组是基本数据类型的数组,即int,double,char,boolean,在定义数组之后没有指定初始值,则依据数据类型的不同,会给数组元素赋一个默认值如:int 初始值=0
double初始值=0.0
char初始值='u0000'
boolean初始值=False
数组应用:排序:
语法格式:Array.sort(数组名);
Arrays是Java中的一个类,而sort()是该类的一个方法。该方法执行后,数组中的元素会按照升序排列。
案例如下:对5位同学的成绩按升序排列
//5位同学的成绩如下:98,65,70,85,77 import java.util.Arrays;//引入Arrays类 import java.util.Scanner;//引入Scanner类 public class 类名{ public static void main(String[]args){ int[]scores=new int[5];//定义成绩数组 Scanner input=new Scanner(System.in); System.out.println("请输入5位同学的成绩:"); for(int i=0;i求最大值:
关于最大值的求法:我们可以用传统的擂台赛为例,进行分析。
A,B,C,D四人,进行擂台赛,假定A为擂台擂主,接下来就是B与其对战,若B赢了,则B为新的擂主,否则A仍为擂主并继续和C对战,若C赢了,则C成为新的擂主,否则A仍为擂主并继续和D战斗,若D赢了,则D为擂主也是冠军,否则A仍为擂主且同时成为冠军。
由上方案例可写出如下代码:
max=scores[0];
if(scores[1]>max)
max=scores[1];
if(scores[2]>max)
max=scores[2];
if(scores[3]>max)
max=scores[3];
if(scores[4]>max)
max=scores[4];
这样最后的变量max就是本次擂台赛的最终胜利者。但是这样的代码是繁琐的,我们需要对代码进行简化,利用循环使变量max与数组中的元素进行比较,如果max的值小于比较的数,则进行置换,否则不执行任何 *** 作。代码如下:
import java.util.Scanner public class MaxScore{ //求数组最大值 public static void main(String[]args){ Scanner input=new Scanner(System.in);//实例化Scanner类 int[]scores1=new int[5];//定义数组 int max=0;//定义变量,用于保存最大值 System.out.println("请输入5位同学的成绩:"); for(int i=0;imax){ max=scores1[j]; } } System.out.println("考试成绩最高分为:"+max); } } 插入元素:
将一组学生成绩{99,85,82,63,60},将它们按降序排列,保存在一个数组中,现在需要增加一个成绩,将它插入数组,并保持成绩升序排列。
分析:
首先将5个学生的成绩保存在长度为6的数组整型数组中,然后,要找到新增成绩插入位置。为了保持数组中的成绩有序,需要从数组的第一个元素开始与新增成绩比较,直到找到要插入的位置,可以使用循环进行比较,找到插入位置后,将该位置后的元素后移一个位置,最后将新增成绩信息插入该位置即可。
import java.util.Scanner; public class Insert{ public static void main(String[]args){ int[] list=new int[6]; list[0]=99; list[1]=85; list[2]=82; list[3]=63; list[4]=60; int index=list.length;//保存新增成绩插入位置 System.out.println("请输入新增成绩:"); Scanner input=new Scanner(System.in); int num=input.nextInt();//输入要插入的数据 //找到新元素的插入位置 for(int i=0;ilist[i]) { index=i; break; } } //元素后移 for(int j=list.length-1;j>index;j--) { list[j]=list[j-1];//index下标开始的元素后移一个位置。 } list[index]=num;//插入数据 System.out.println("插入成绩下标为:"+index); System.out.println("插入后的成绩信息是:"); //循环输出目前数组中的数据 for(int k=0;k 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)