《Java自学课件-数组.ppt》由会员分享,可在线阅读,更多相关《Java自学课件-数组.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、YANGLINBNUITCJava程序设计第6章 数组学习目标o理解数组的概念o掌握声明数组变量、创建数组、初始化数组o掌握如何访问数组元素o掌握向方法传递数组o了解如何复制数组o掌握搜索和排序算法o掌握多维数组的声明和创建数组o数组(array)是相同类型变量的集合。double myList=new double10;5.64.53.313.2434.333445.4599.9931123myList0myList1myList2myList3myList4myList5myList6myList7myList8myList9引用myList声明数组引用变量o语法datatype arra
2、yRefVar;例如:double myList;或者datatype arrayRefVar;例如:double myList;o数组变量是引用类型的变量,声明数组变量并不分配内存空间。创建数组o使用new操作符创建数组。arrayRefVar=new datatypearraySize;例如:myList=new double10;o声明和创建在一条语句中。datatype arrayRefVar=new datatypearraySize;或者datatype arrayRefVar=new datatypearraySize;例如:double myList=new double10;
3、或者double myList=new double10;数组初始化o新创建的数组对象,其元素根据类型被设置为默认的初始值。n数值类型为0n字符类型为u0000n布尔类型为falsen引用类型为nullo数组可以在声明后的花括号中提供初始值。double myList=1.9,2.9,3.4,3.5或者double myList;myList=new double 1.9,2.9,3.4,3.5访问数组o一个数组的大小在创建这个数组之后不能被改变。可以用以下语法进行访问数组的长度:arrayRefVar.length例如:myList.length的值为10。o数组元素通过索引进行访问。元素的
4、索引从0开始,范围从0到length-1。arrayRefVarindex例如:myList0表示数组的第一个元素myList9表示数组的最后一个元素增强的for循环(JDK 1.5)oJDK 1.5引入一个新的for循环,可以不用下标就可以依次访问数组元素。语法:for(elementType value:arrayRefVar)例如for(int i=0;i=best 10,等级为A如果分数=best 20,等级为B如果分数=best 30,等级为C如果分数=best 40,等级为D否则等级为FExample:AssignGrade.java复制数组o直接使用赋值语句不能实现数组的复制,结
5、果是两个数组引用变量指向同一个数组对象。o复制数组的方法n使用循环来复制每个元素n使用System.arraycopy方法n使用数组的clone方法x:1y:1copy基本类型x:refy:refcopyarray数组类型向方法传递数组o可以将数组变量作为实参传递给方法。n基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。n数组引用变量中传递的是对象的引用,修改形参,将改变实参引用的数组对象。o也可以从方法中返回数组。实参:1形参:1copy基本类型实参:ref形参:refcopyarray数组类型例 传递数组o编写两个方法交换数组中的两个元素。nswap方法交换两个int类型的参数ns
6、wapFirstTwoInArray方法交换数组参数的前两个元素Example:TestPassArray.java例 统计每个字符出现的次数o编写程序,完成以下任务n随机产生100个小写字母,并保存在一个字符数组中。n计算数组中每个字母出现的次数。Example:CountLettersInArray.java搜索数组o线性搜索法(linear searching)将一个值与数组的每个元素进行比较。如果找到相同的元素,返回元素的索引;否则返回-1。o二分搜索法(binary searching)是在一个已排序的数组中搜索特定元素。假设数组已按升序排列,将关键字与数组中间元素进行比较:n如果关
7、键字比中间元素小,则在前一半数组中搜索;n如果关键字与中间元素相同,查找结束;n如果关键字比中间元素在,则在后一半数组中搜索。Example:LinearSearch.java,BinarySearch.java排序数组o选择排序算法:假设将数组按升序排列n算法o将列表中的元素最大值放在最后一个位置o将剩下元素的最大值放在倒数第二的位置o以此类推,直到剩下一个数为止。2 9 5 4 8 1 6Example:SelectionSort.java二维数组o声明数组引用变量dataType refVar;o创建数组并将引用赋值给变量refVar=new dataTyperowSizecolSize
8、;o在一条语句中声明和创建数组dataType refVar=new dataTyperowSizecolSize;或者dataType refVar=new dataTyperowSizecolSize;二维数组示意图int matrix=new int45matrix21=7int array=1,2,3,4,5,6,7,8,9,10,11,12;0 1 2 3 401230 1 2 3 4701230 1 212345678901210 11 123二维数组的长度o二维数组的每个元素是一个一维数组。n数组X的长度是数组X的元素的个数,可由X.length得到。n元素Xi是一个一维数组,其
9、长度可由Xi.length得到。X00X10X20X0X1X2XX01X11X21X02X12X22X03X13X23X.length is 3 X0.length is 4 X1.length is 4 X2.length is 4 不规则数组o二维数组的每个元素(数组)的长度可以不同。o创建二维数组时,可以只指定第一下标。二维数组的每个元素为空,必须创建每个元素数组。例如:int x=new int5;x0=new int5;x1=new int4;x2=new int3;x3=new int2;x4=new int1;x00 x10 x20 x0 x1x2xx01x11x21x02x12
10、x22x03x13x04x30 x31x40 x3x4例 给选择题评分o编写程序,给选择题评分。设有8个学生10个问题,答案存储在一个二维数组中。每行记录一个学生的答案。输出每个学生的评分结果。A B A C C D E E A DD B A B C A E E A DE D D A C B E E A DC B A E D C E E A DA B D C C D E E A DB B E C C D E E A DB B A C C D E E A DE B E C C D E E A D0 1 2 3 4 5 6 7 8 9 学生0学生1学生2学生3学生4学生5学生6学生7D B D C C D A E A D答案Example:GradeExam.java例 使用数组计算所得税o美国的个人所得税根据纳税人情况和须纳税收入进行计算。编写程序,用户输入纳税人情况和须纳税收入,计算出2002年的所得税。2002年美国个人所得税税率表Example:ComputeTax.java例 分数计算o编写程序计算班级中每个学生的总分。假设分数保存在三维数组中,数组的第维代表学生,第维代表试卷,第维代表试卷的一部分的成绩。学生学生学生学生学生试卷试卷1试卷2试卷3试卷4试卷5试卷6试卷7部分部分部分部分部分部分部分Example:TotalScore.java