JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章

上传人:E**** 文档编号:89372851 上传时间:2019-05-24 格式:PPT 页数:103 大小:661.50KB
返回 下载 相关 举报
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章_第1页
第1页 / 共103页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章_第2页
第2页 / 共103页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章_第3页
第3页 / 共103页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章_第4页
第4页 / 共103页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章》由会员分享,可在线阅读,更多相关《JAVA程序设计教程 教学课件 ppt 作者 赵莉 第1-6章 第4章(103页珍藏版)》请在金锄头文库上搜索。

1、,第4章 数组与字符串,4.1 数组 4.2 字符串 本章小结 习题,4.1 数 组 数组是用一个标识符(变量名)和一组下标来代表一组具有相同数据类型的数据元素的集合。这些数据元素在计算机存储器中占用一片连续的存储空间,其中的每个数组元素在数组中的位置是固定的,可以通过下标的编号加以区分,并通过标识符和下标访问每一个数据元素。,数组提供了在计算机存储器中快速且简便的数据存取方式,数组的应用可以大大提高对数据操作的灵活性。 在Java语法中,数组被定义为一个对象,属于引用类型,数组中的元素序号从0开始,并且通过下标操作符引用它们。,4.1.1 一维数组 1. 一维数组的声明 声明一个数组就是要确

2、定数组名、数组的维数和数组元素的数据类型。数组名是符合Java标识符定义规则的用户自定义标识符,它是数组类对象的引用类型变量的名字。类型标识符是指数组元素的数据类型,可以是Java的基本数据类型(如int、float、double、char),也可以是引用类型(如类(class)、接口(interface)等)。,一维数组的定义形式如下: 类型标识符 数组名; 或 类型标识符 数组名; 例如: int intArray; /声明一个数组名为intArray的整型数组 double example; /声明一个数组名为example的浮点型双精度数组,2. 一维数组的初始化 与C、C+不同,Ja

3、va在数组的声明中并不为数组元素分配内存,因此下标操作符中不用指出数组中元素的个数,即数组长度。而且对于如上声明的一个数组是不能访问它的任何元素的。如果要初始化数组的元素,则必须为它分配内存空间。Java的数组初始化可以通过直接指定初值或用new运算符的方式来实现。,1) 直接指定初值方式 用直接指定初值的方式对数组初始化,是指在声明一个数组的同时将数组元素的初值依次写入赋值操作符后的一对花括号内,给这个数组的所有数组元素赋上初值。这样,Java的编译器就可以通过初值个数确定数组元素的个数,并为它分配需要的存储空间存放这些数据。,例如: int a1 = 12,34,-9,65; 上述语句声明

4、了数组名为a1的整型数组,并为其赋初值,共有4个初值,故数组元素个数为4。系统为这个数组分配44个字节的连续存储空间。各元素的初始值如图4-1所示。,图4-1 数组a1的初始化,2) 用new初始化数组 用new初始化数组的形式如下: 类型标识符 数组名; 数组名=new类型标识符数组长度; 例如: int intArray; intArray=new int3;,上述代码为一个整型数组分配了3个int型整数所占据的内存空间。通常,这两个语句可以合在一起,格式如下: 类型标识符 数组名=new类型标识符数组长度; 例如: int a=new int3; 上面的语句定义了数组a有3个元素,并按照

5、Java提供的数据成员默认值初始化原则进行初始化。用new初始化数组a的存储空间分配及初始化情况如图4-2所示。,图4-2 用new初始化数组a,3. 一维数组元素的引用 定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式如下: 数组名下标 其中,下标可以为整型常数或表达式,如a3、bi(i为整型)、c6*I等。下标从0开始,一直到数组的长度减1。对于上面例子中的数组a来说,它有3个元素,分别是:a0、a1、a2。,另外,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:a.leng

6、th指明数组a的长度。下面的例子演示了Java语法定义数组和引用数组元素的方式。,【示例4-1】 ArrayTest.java。 public class ArrayTest public static void main(String args) int i; int a=new int5; for(i=0;i=0;i-) System.out.println(“a”+i+“=”+ai); ,程序运行结果: a4=4 a3=3 a2=2 a1=1 a0=0 该程序对数组中的每个元素赋值,然后按逆序输出。,4. 一维数组程序举例 下面的例子演示了利用数组处理Fibonacci数列,并打印出其前

7、10项。 Fibonacci数列的定义如下: F1=F2=1,Fn=Fn-1+Fn-2(n=3),【示例4-2】 ClassFibonacci.java。 public class ClassFibonacci public static void main(String args) int i; int f=new int10; f0=f1=1; for(i=2;i10;i+) fi=fi-1+fi-2; for(i=1;i=10;i+) System.out.println(“F”+i+“=”+fi-1); ,程序运行结果: F1=1 F2=1 F3=2 F4=3 F5=5 F6=8 F7

8、=13 F8=21 F9=34 F10=55,4.1.2 二维数组 对于日常数据处理中经常用到的矩阵、行列式、二维表格等,Java提供了二维数组这种数据结构来存放,如图4-3所示。 Java中多维数组被看做数组的数组。例如,二维数组为一个特殊的一维数组,其中每个元素又是一个一维数组。,图4-3 二维数组示意图,1. 二维数组的声明 二维数组的声明方式如下: 类型标识符 数组名; 例如: int intArray; 与一维数组一样,二维数组对数组元素也没有分配内存空间,同样要使用运算符new来分配内存,然后才可以访问每个元素。 对多维数组来说,分配内存空间有下面几种方法。,(1) 直接为每一维分

9、配空间,如: int a=new int23; (2) 从最高维开始,分别为每一维分配空间,如: int a=new int2; a0=new int3; a1=new int3;,2. 二维数组元素的引用 对二维数组中每个元素的引用方式如下: 数组名下标1下标2 其中,下标1、下标2为整型常数或表达式,如a23等,同样,每一维的下标都从0开始。,3. 二维数组的初始化 二维数组的初始化有两种方式: (1) 直接对每个元素进行赋值。 (2) 在声明数组的同时进行初始化。 例如: int a=2,3,1,5,3,4; 上面的语句定义了一个32的数组,并对每个元素赋值。,4. 二维数组举例 下面的

10、例子演示了如何使用二维数组实现矩阵相乘。两个矩阵Amn、Bn l相乘得到Cml,每个元素Cij=aik*bk (i=1m,n=1n)。,【示例4-3】 MatrixMultiply.java。 public class MatrixMultiply public static void main(String args) int i,j,k; int a=new int23; int b=1,5,2,8,5,9,10,-3,2,7,-5,-18; int c=new int24; for(i=0;i2;i+) for(j=0;j3;j+) aij=(i+1)*(j+2);,for(i=0;i2

11、;i+) for(j=0;j4;j+) cij=0; for(k=0;k3;k+) cij+=aik*bkj; /矩阵相乘 System.out.println(“n*MatrixA*“); for(i=0;i2;i+),for(j=0;j3;j+) System.out.print(aij+“); System.out.println( ); System.out.println(“n*MatrixB*“); for(i=0;i3;i+) for(j=0;j4;j+) System.out.print(bij+“); System.out.println( ); ,System.out.pr

12、intln(“n*MatrixC*”); for(i=0;i2;i+) for(j=0;j4;j+) System.out.print(cij+“”); System.out.println( ); ,程序运行结果: *MatrixA* 2 3 4 4 6 8 *MatrixB* 1 5 2 8 5 9 10 -3 2 7 -5 -18 *MatrixC* 25 65 14 -65 50 130 28 -130,4.1.3 不规则数组 Java实际上没有多维数组,只有一维数组。多维数组被解释为“数组的数组”。 Java语法支持方便地构造一个“不规则”数组,即数组的每一行有不同的长度。下面是一个

13、典型的示例,实现了一个“下三角矩阵”。,【示例4-4】 TwoArrayAgain.java。 public class TwoArrayAgain public static void main(String args) int twoArray = new int4; /声明二维数组 twoArray0 = new int1; /定义每一行 twoArray1 = new int2; twoArray2 = new int3; twoArray3 = new int4; int i, j, k = 0; for(i=0;itwoArray.length;i+) for(j=0;jtwoAr

14、rayi.length;j+,k+),twoArray ij = k; for(i=0;itwoArray.length;i+) for(j=0;jtwoArrayi.length;j+) System.out.print(twoArrayij + “ ”); System.out.println(); ,程序运行结果: 0 1 2 3 4 5 6 7 8 9,4.1.4 数组实用类Arrays 在java.util包中,有一个用于操作数组的实用类java.util.Arrays。它提供了一系列静态方法完成数组的常用操作。 int binarySearch(type a,type key):用于查询key元素值在a数组中出现的索引。如果a数组不包含key元素值,则返回 -1。调用该方法时,要求数组中元素已经按升序排列,这样才能得到正确结果。,1. binarySearch (二分查找) binarySearch表达形式如下: binarySearch(type a,int fromIndex,int toIndex,type key) 这个方法只搜索a数组中formIndex到toIndex索引的元素。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。,2. copyOf (拷贝): co

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

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

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