主编:孙修东、王永红高职高专规划示范教材北京航空航天大学出版社2/18目录任务一搭建环境(构建Java集成开发环境)任务二Java欢迎你(开发简单Java应用程序任务三小试牛刀(学习Java语言基础)任务四挑战选择(使用分支控制流程)任务五游戏人生(使用循环控制流程)任务六回归自然(创建、使用类和对象)任务七3G时代的消息传递(定义和使用类方法)任务八保护你的隐私(封装的使用)任务九子承父业(继承和多态的使用)任务十上帝万能之手(接口的使用)3/18任务十一用数组存储信息(使用数组)任务十二使用字符串进行交流(使用字符串)任务十三防患于未然(捕获并处理异常)任务十四主动出击(抛出异常)任务十五认识JavaApplet(Applet入门)任务十六丰富多彩的Applet(在Applet中播放声音和显示图像)任务十七进入Windows世界(设计图形用户界面)任务十八布局规划(使用布局管理器)任务十九事件委托处理(如何处理事件)任务二十选择之道(使用选择控件和选择事件)目录4/18任务二十一简明清晰的菜单(使用菜单和其他常用事件)任务二十二访问数据(使用JDBC连接数据库)任务二十三访问数据升级(数据库编程)任务二十四文件管理(目录与文件管理)任务二十五顺序进出之道(文件的顺序访问)任务二十六随机进出之道(文件的随机访问)任务二十七JAVA的分身术(创建和启动线程)任务二十八线程的生命周期与优先级(线程的状态与调度)任务二十九基于连接的通信(Java中的套接字Socket)任务三十基于无连接的通信(Java中的数据报编程)目录5/18任务十一用数组存储信息(使用数组)21知识目标能力目标声明数组和创建;数组的初始化;数组元素的使用;main方法参数使用;java.util.Arrays类操纵数组。理解什么是数组;掌握一维数组的定义和使用;会使用数组解决简单问题。6/18内容提要4跟我做:计算小组成员的考试成绩1235实现方案代码分析必备知识动手做一做7/1811.1跟我做:计算小组成员的考试成绩任务情景编写一个程序sum.java,计算本小组成员的考试总分。小组共有5名成员,本次JAVA考试成绩分别为95,89,79,64,81,编写程序sum,当程序运行时,在控制台输出“本小组成员的总分为:408”。运行结果第1章目录8/18问题分析从技术角度,需要定义5个变量分别存放5位成员的成绩,还需要定义一个变量存放总分。解决步骤解决问题的步骤:先定义数组分别存放5位学员的成绩,然后把5个变量相加得到的和赋给一个新的变量。第1章目录11.2实现方案9/18程序代码packagecom.task11;publicclasssum{publicstaticvoidmain(String[]args){int[]score=newint[]{95,89,79,64,81};//成绩数组声明并初始化intsum=0;//成绩总和for(intindex=0;indexscore.length;index++){//计算总分sum=sum+score[index];}System.out.println(本小组成员的总分为:+sum);//显示输出结果}}第1章目录11.3代码分析10/1811.3代码分析应用扩展1.如果有多组成员,并要求分别算出每组成员的总分怎么办?这时候需要用到多维数组,最常用的多维数组是二维数组,它是具有两个下标的数组,格式如下:数据类型[][]数组名;或者数据类型数组名[][];2.数组是对象类型,具有属性和方法,可以通过length属性在程序中动态获得数组的长度。其语法为:数组名.length;第1章目录11/1811.4必备知识11.4.1数组的概念数组是具有相同数据类型的一组数的有序集合,数组中的每个数据称为数组的元素,数组中各元素具有相同的数据类型,且在内存中是连续存放的,通过下标来区分数组中的不同元素。根据构成形式,可将数组分为一维数组和多维数组,本章主要介绍一维数组。11.4.2声明数组和创建数组数组要先声明,然后才能使用。一维数组的声明格式如下:数据类型[]数组名;或者数据类型数组名[];以上两种格式都可以声明一个数组,其中,数据类型既可以是基本数据类型,也可以是引用数据类型;[]必不可少,代表声明的是数组变量,而不是普遍变量;数组名可以是任意合法的变量名。第1章目录12/1811.4必备知识例如:intscore[];//声明了一个名称为score的数组,数组中元素的类型为intString[]name;//声明了一个名称为name的数组,数组中元素的类型为String声明数组仅仅指定了数组的名称和元素的数据类型,数组元素的个数并未确定,因此,系统无法为它分配内存空间,在使用前还需要为它分配空间,即创建数组空间,格式如下:数据类型[]数组名=new数据类型[数组中元素的个数];在创建数组时需要指定数组中元素的个数,创建之后不可修改,创建之后会返回一个数组空间的引用。例如,为刚才声明的数组score分配空间:score=newint[30];当然,也可以在声明数组时就给它分配空间,格式如下:数据类型[]数组名=new数据类型[数组中元素的个数];例如:intscore[]=newint[5];//创建了一个包含5个int型元素的数组第1章目录13/1811.4.3数组的初始化如果数组元素的类型是基本数据类型,那么数组在创建之后,每个元素会自动赋予其数据类型的默认值,如int型会自动赋为0,boolean型会自动赋为false,char型会自动赋为’\0’。当然,大部分情况下,我们都需要对数组进行显式地初始化,在定义数组的时候就给数组的每个元素赋值。格式如下:数据类型[]数组名=new数据类型[]{值1,值2,值3,…,值n};或者数据类型[]数组名={值1,值2,值3,…,值n};例如:int[]score={89,79,76,64,81};int[]score=newint[]{89,79,76,64,81};初始化时将所有的初始值用{}括起来,每个值直接用逗号隔开。注意:这里在创建数组时,省略了数组的中元素的个数,如果数组定义时进行了初始化操作,那么数组中元素的个数将根据给定的初始值来确定,不能另行指定。第1章目录11.4必备知识14/1811.4.4数组元素的使用创建数组,其目的是为了使用数组,格式:数组名[下标]例如:score[1]数组中的每个元素都有一个索引,或者称为下标,代表了元素在数组中所处的位置。需要注意的是,下标是从0开始的,直到数组元素减1为止,下标可以是int类型的数据和算术表达式。例如,score[2+1]是合法的。因此,int[]score=newint[]{95,89,79,64,81}相当于:intscore[];score=newint[5];score[0]=95;score[1]=89;score[2]=79;score[3]=64;score[4]=81;11.4.5main方法的特点如果一个类要被Java解释器直接装载运行,那么这个类中必须要有main()方法。由于Java虚拟机需要调用类的main()方法,所有该方法的访问权限必须是public,又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法还必须是static的,main()方法接收一个String类型的参数数组,该数组保存了执行Java命令时传递给所运行的类的参数。main()方法的参数形式为:String[]argsArgs数组中元素的个数就是在命令行中给类传递的参数的个数,每个参数直接用空格分开。11.4必备知识15/1811.4.6使用java.util.Arrays类操纵数组Java的设计人员预先给我们提供了很多包,java.util包就是其中之一。java.util包由许多常用的类组成,Arrays类就是其中一种。Arrays类提供了许多常用的方法来操作数组,例如:排序、查询等,常用方法如下所示:1.booleanequals(数组1,数组2):比较两个数组是否相等。两个数组必须是同类型的,只有当两个数组的元素个数相同且对应位置元素也相同时,才表示两个数组相同,返回true,否则返回false。2.voidfill(数组,值):将指定的值分配给数组中的每个元素。3.voidsort(数组):对数组中的元素按照升序排序。数组是数值型或者char型时,将按元素值由小到大排序。4.intbinarySearch(数组,值):在调用此方法前必须先对数组进行排序,该方法按照二分查找算法查找数组是否包含指定的值,如果包含,则返回该值在数组中的索引;如果不包含该值,则返回负值。注意,使用以上方法时必须先导入java.util.Arrays包。11.4必备知识16/18例如,要对本小组成员成绩按分数由低到高进行排序packagecom.task11;importjava.util.Arrays;publicclasssort{publicstaticvoidmain(String[]args){int[]score=newint[]{95,89,79,64,81};Arrays.sort(score);//对数组排序for(intindex=0;indexscore.length;index++){System.out.println(score[index]);//显示排序后的结果}}}11.4必备知识17/18输出结果如图11-2。11.4必备知识18/1811.5动手做一做一、实训目的掌握Java中数组的声明、创建、初始化和使用;理解数组的复制;体会二分查找的基本算法思想。二、实训内容1.请输入并运行下面的程序,写出程序的运行结果。publicclassArrayCopy{publicstaticvoidmain(String[]args){int[]a={1,2,3};int[]b=a;b[1]=5;System.out.println(a[1]=+a[1]+,b[1]=+b[1]);}}2.将0~99分别赋给一个包含100个整型元素的数组,并用二分查找法查找元素32、1和1032。输出结果如图11-3所示。图11-3程序arrayBinary的运行结果三、简要提示二分查找的基本思路是:先将整个数组作为查找区间,用给定的值与查找区间的中间元素的值进行比较,若相等,则查找成功;若不等,则缩小范围,判断该值落在区间的前一部分还是后一部分,再将其所在的部分作为新的查找区间,继续上述过程,一直找到该值或区间大小小于0,表明查找不成功为止。四、程序代码参见本教材教学资源。五、实训思考1.程序中整型变量high、low、mid、cnt分别起什么作用?布尔型变量found又起到什么作用?2.该程序是如何确定查找区间范围的?