Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章 数 组

上传人:E**** 文档编号:89355139 上传时间:2019-05-23 格式:PPT 页数:33 大小:264.50KB
返回 下载 相关 举报
Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章   数    组_第1页
第1页 / 共33页
Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章   数    组_第2页
第2页 / 共33页
Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章   数    组_第3页
第3页 / 共33页
Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章   数    组_第4页
第4页 / 共33页
Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章   数    组_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章 数 组》由会员分享,可在线阅读,更多相关《Java 语言程序设计教程资源 教学课件 ppt 作者 张席 第1-7章 第3章 数 组(33页珍藏版)》请在金锄头文库上搜索。

1、第3章 数 组,3.1 一维数组 3.2 二维数组,3.1 一 维 数 组,一维数组是最简单的数组,在Java中,数组是作为数组类的一个实例来处理的,故可以用new运算符来建立一个数组。由于数组中每一个元素都作为一个单独的对象来考虑,因而必须逐一建立,所以定义的时候,我们必须显式或隐含地指明数组中对象的数目。下面我们分声明和引用两部分来进行介绍。,3.1.1 一维数组的声明和初始化 数组变量在使用之前要事先声明,其数组元素的类型可分为三类,第一类是Java的基本数据类型;第二类是Java类和接口类型(引用类型);第三类是数组类型。其一般定义格式如下: array_type array_Name

2、 ; 或 array_type array_Name;,上面两种定义方式完全等价。对C/C+熟悉的读者应该对第一种定义方式并不陌生。例如: int Array1 ; Object Array2; 上面所给的例子只是简单的变量声明,并没有给数组分配内存空间。我们在使用数组前还必须对其进行初始化(即为其分配内存空间)。给数组元素分配内存并为数组元素赋初值的过程称为数组初始化。初始化可分为动态初始化和静态初始化。,1静态初始化 当数组元素的初始化值直接由括在大括号“ ”之间的数据给出时,就称为静态初始化。该方法适用于数组的元素不多且初始元素有限时。静态初始化往往和声明结合在一起使用,其格式如下: a

3、rray_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

4、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为数

5、组元素的下标。数组的下标是一个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; / its ok .,在Java语言中,数组下标从0开始,到数组长度减1结束。任何数组都有公有变量length。我们除了可以在使用时显式指出数组长度

6、之外,也可以使用length这一数组属性。它是只读变量,只可检测,不可赋值,因为数组一旦分配内存后,其长度就不再变化。 为了安全考虑,数组的存取在程序运行时实时检查,企图使用小于零或大于数组长度的下标都会引起越界异常(ArrayIndexOutofBoundException)(异常处理我们将在后面的章节中给出)。,例如: . int array1= new int 10; array1-1= 100; / error, out of bound. array1 10= 200; / error ,out of bound. . 下面我们给出一个完整的例子,作为本节的总结。,例3.1 publ

7、ic 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) s

8、alaryi = 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+salar

9、yi; 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是作者所提供的标准类,在附录

10、中我们会给出。该程序是在JBuilder 3.0中运行并通过的。作者提供的标准类,须在JBuilder中的project菜单项中对properites属性进行设置。由于作者把标准类安装在E:packagesgenesis目录中,故须设置为如图3.2所示。今后例子中所用到的标准类,如无特别说明,均与此例相同。,图 3.2,3.2 二 维 数 组,我们在讨论一维数组的时候谈到,数组的元素类型可以为数组,即数组的嵌套,其实,多维数组可以看作是数组的数组。也就是说,多维数组中每个元素为一个低维数组,故多维数组的声明、初始化和引用与一维数组非常相似。由于多维数组中用得较多的还是二维数组,因而我们着重讨论

11、二维数组的属性,其他高维数组可以以此类推。,3.2.1 二维数组的声明和初始化 与一维数组类似,二维数组声明的一般格式如下: array_type array_Name ; 或 array_type array_Name; 其中,array_type为数组元素类型,可以是任意的数据类型;array_Name为数组名,可以是Java中合法的标识符。上面的定义并没有为数组元素分配内存空间,因而必须经过初始化后才能使用。,例如: int array1 ; /定义一个整型二维数组 或 int array2; /同样定义一个二维整型数组 二维数组在实际的使用过程中也分为静态初始化和动态初始化两种。初始化

12、的过程与一维数组相同,在此不多加理论说明,而只是以初始化实例来加以说明。,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 二维数组的引用 当我们对二维数组进行了初始化后,就可以在程序中引用数组的元素了。二维数组元素的引用是通过数组名和下标值来进行的,其一

13、般格式如下: 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所示。

14、,表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=“Ma

15、ths“,“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对学生的成绩进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号