欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    第3章 数组.ppt

    • 资源ID:5030173       资源大小:266KB        全文页数:33页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章 数组.ppt

    第3章 数 组,3.1 一维数组 3.2 二维数组,3.1 一 维 数 组,一维数组是最简单的数组,在Java中,数组是作为数组类的一个实例来处理的,故可以用new运算符来建立一个数组。由于数组中每一个元素都作为一个单独的对象来考虑,因而必须逐一建立,所以定义的时候,我们必须显式或隐含地指明数组中对象的数目。下面我们分声明和引用两部分来进行介绍。,3.1.1 一维数组的声明和初始化 数组变量在使用之前要事先声明,其数组元素的类型可分为三类,第一类是Java的基本数据类型;第二类是Java类和接口类型(引用类型);第三类是数组类型。其一般定义格式如下: array_type array_Name ; 或 array_type array_Name;,上面两种定义方式完全等价。对C/C+熟悉的读者应该对第一种定义方式并不陌生。例如: int Array1 ; Object Array2; 上面所给的例子只是简单的变量声明,并没有给数组分配内存空间。我们在使用数组前还必须对其进行初始化(即为其分配内存空间)。给数组元素分配内存并为数组元素赋初值的过程称为数组初始化。初始化可分为动态初始化和静态初始化。,1静态初始化 当数组元素的初始化值直接由括在大括号“ ”之间的数据给出时,就称为静态初始化。该方法适用于数组的元素不多且初始元素有限时。静态初始化往往和声明结合在一起使用,其格式如下: array_type array_Name=element1, element2;,其中,array_type为数组元素的类型;array_Name为数组名;element1、element2为array_type类型的数组元素初值;方括号“ ”表示可选项。例如: int factorial = 1,2,3,4,5,6,7,8; char ch='a','A','b','B','c','C' double f =12,45.12,88.123;,2动态初始化 与静态初始化不同,动态初始化先用new操作符为数组分配内存,然后才为每一个元素赋初值。其一般格式如下: array_Name = new array_type arraySize; 其中,array_Name是已定义的数组名;array_type为数组元素的数据类型,必须与定义时给出的数据类型保持一致;arraySize为数组的长度,它可为整型变量或常量。例如:,. int series = new int4; for (int i=0;i4;i+) series i =i*3; .,3.1.2 一维数组的引用 当有了数组的声明和初始化后,与C/C+相同,就可以在程序中引用数组的元素了。数组元素的引用是通过数组名和下标值来进行的,其一般格式如下: array_Name arrayIndex 其中,array_Name为数组名,arrayIndex为数组元素的下标。数组的下标是一个int类型数,也可以使用与int类型进行自动类型转换的类型,如short、byte、char类型(使用时转换成int类型),但下标不能是long类型的数。如果非得用long类型的数定义数组的下标,则须强制转换。,比如: . short i; byte j; long k; int array1 i,array2j; / no error int array3k; / error int array4 (int) k; / it's ok .,在Java语言中,数组下标从0开始,到数组长度减1结束。任何数组都有公有变量length。我们除了可以在使用时显式指出数组长度之外,也可以使用length这一数组属性。它是只读变量,只可检测,不可赋值,因为数组一旦分配内存后,其长度就不再变化。 为了安全考虑,数组的存取在程序运行时实时检查,企图使用小于零或大于数组长度的下标都会引起越界异常(ArrayIndexOutofBoundException)(异常处理我们将在后面的章节中给出)。,例如: . int array1= new int 10; array1-1= 100; / error, out of bound. array1 10= 200; / error ,out of bound. . 下面我们给出一个完整的例子,作为本节的总结。,例3.1 public class TimeSheetDemo public static void main (String args) int days = DialogBox.requestInt(“number of days worked“); int hours; hours = new int days; for (int i=0; idays; i+) hoursi = DialogBox.requestInt(“hours on day “+(i+1); ,int salary = new int days; for (int i=0; idays; i+) if (hoursi = 8) salaryi = 15*hoursi; else salaryi = 8*15 + (hoursi-8)*20; Transcript.println(“DaytHourstSalary“); for (int i=0; idays; i+) ,Transcript.println(i+1)+“t“+hoursi+“t$“+salaryi); int totalHours = 0; int totalSalary=0; for (int i=0; idays; i+) totalHours = totalHours+hoursi; totalSalary = totalSalary+salaryi; Transcript.println(“Total hours: “+totalHours); Transcript.println(“Total salary: $“+totalSalary); ,本例的功能是对员工工作的天数、日薪、日工作时间等进行统计;当每天工作时间不超过8小时时,每小时的酬金为15元,如果超过8小时,在每小时15元的基础上再累加超工作量酬金;最后对工作天数、小时数、工资进行输出。当我们输入工作天数为5天,顺序的工作小时为9、5、11、8、4后,其输出结果如图3.1所示。,图 3.1,在该例中,类DialogBox、Transcript是作者所提供的标准类,在附录中我们会给出。该程序是在JBuilder 3.0中运行并通过的。作者提供的标准类,须在JBuilder中的project菜单项中对properites属性进行设置。由于作者把标准类安装在E:packagesgenesis目录中,故须设置为如图3.2所示。今后例子中所用到的标准类,如无特别说明,均与此例相同。,图 3.2,3.2 二 维 数 组,我们在讨论一维数组的时候谈到,数组的元素类型可以为数组,即数组的嵌套,其实,多维数组可以看作是数组的数组。也就是说,多维数组中每个元素为一个低维数组,故多维数组的声明、初始化和引用与一维数组非常相似。由于多维数组中用得较多的还是二维数组,因而我们着重讨论二维数组的属性,其他高维数组可以以此类推。,3.2.1 二维数组的声明和初始化 与一维数组类似,二维数组声明的一般格式如下: array_type array_Name ; 或 array_type array_Name; 其中,array_type为数组元素类型,可以是任意的数据类型;array_Name为数组名,可以是Java中合法的标识符。上面的定义并没有为数组元素分配内存空间,因而必须经过初始化后才能使用。,例如: int array1 ; /定义一个整型二维数组 或 int array2; /同样定义一个二维整型数组 二维数组在实际的使用过程中也分为静态初始化和动态初始化两种。初始化的过程与一维数组相同,在此不多加理论说明,而只是以初始化实例来加以说明。,1静态初始化实例 . int number = 1,2,3,4,5,6; char ch = 'a', 'b','c', 'd','e', 'f' . 上例是在建立数组的同时用大括号中的值给它赋初值,得到了两个二维整型数组和二维字符数组。,2动态初始化实例 . int array_int =new int33; /定义数组并为其分配存储空间 long array_long=new long55; .,3.2.2 二维数组的引用 当我们对二维数组进行了初始化后,就可以在程序中引用数组的元素了。二维数组元素的引用是通过数组名和下标值来进行的,其一般格式如下: array_Name arrayIndex1 arrayIndex2,其中,array_Name为数组名;arrayIndex1为数组元素的高维下标;arrayIndex2为数组的低维下标。二维数组中,下标同样是一个int类型数,也可以使用与int类型进行自动类型转换的类型,如short、byte、char类型(使用时转换成int类型),但下标不能是long类型的数。如果非得用long类型的数定义数组的下标,则须强制转换。 熟悉C/C+的读者知道,在C/C+使用二维数组的时候,要求每一维的长度必须一致,例如在C中有如下的定义:int array 3;其对应的二维表如表3.1所示。,表3.1 C/C+中二维数组存储格式,在Java中,却并不要求多维数组的每一维长度相同。例如,当在Java有如下的定义: int array 3=new int3; 时,其对应的二维表如表3.2所示。,表3.2 Java中二维数组存储格式,表3.2中并不要求n=m=k,实际应用中有可能nmk。 下面我们给出一个二维数组应用的实例。 例3.2 public class ProcessingMarks /* Processes students' assessment marks. */ public static void main (String args) String course=“Maths“,“English“,“Computer“,“Communication“;,int classSize = 8; int assessmentMarks = new int classSize4; / for each student for(int m=0;m4;m+) Transcript.print(coursem+“t“); Transcript.println(); for (int i=0; iclassSize; i+) / for each assessment,for (int i=0; iclassSize; i+) / for each assessment for (int j=0; j4; j+) assessmentMarksij= (int)(26*Math.random(); Transcript.print(assessmentMarksij+“t“); Transcript.println(); ,本例是通过二维数组assesmentMarks对学生的成绩进行统计,并按四门功课对其输出。程序中定义一维数组course来保存对应的每门功课,二维数组assesmentMarks保存每门功课的成绩。成绩由Java中Math包中的随机函数来产生,由于随机数为实数,所以须强制转换。Transcript为作者提供的标准类,见附录。程序的输出结果如图3.3所示。,图 3.3,

    注意事项

    本文(第3章 数组.ppt)为本站会员(爱问知识人)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开