Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章

上传人:E**** 文档编号:89369693 上传时间:2019-05-24 格式:PPT 页数:39 大小:1.52MB
返回 下载 相关 举报
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章_第1页
第1页 / 共39页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章_第2页
第2页 / 共39页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章_第3页
第3页 / 共39页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章_第4页
第4页 / 共39页
Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 PPT 作者 辛运帏 饶一梅 第六章(39页珍藏版)》请在金锄头文库上搜索。

1、第6章 数组、容器和字符串,数组,数组中的各元素必须具有相同的类型,可以是基本数据类型,也可以是类类型,甚至还可以是数组类型。 如果数组中元素的类型又是数组的话,就形成了多维数组,即数组的数组。与多维数组相对的称为一维数组。 另外,在Java中,还允许定义不规则的数组。以二维数组为例,所谓不规则数组是指各行中元素的个数不完全相同。,一维数组的说明,数组说明也称为数组定义。在数组定义中,需要指明数组元素的类型是什么, Java语言的语法规则要求数组内的各个元素必须具有相同的类型,数组元素在数组中的排列是有次序的,这个次序称为数组的下标。下标从0开始计数。 一般地,把一维数组看作是一个向量,而不是

2、集合。 访问数组中的元素时是需要指明它的次序的,即使用数组下标来访问数组元素。,一维数组的定义,一维数组的定义格式为: 类型 数组名 ; 类型可以为Java中任意的数据类型, 数组名必须是一个合法的标识符, 指明该变量是一个数组类型变量。在定义时,方括号中不写具体的数字。 例6-1 数组定义 char charArray ; /说明一个名字为charArray的字符数组 int intArray ; /说明一个名字为intArray的int型数组 myPoint points ; /说明一个名字为points的myPoint型的数组,一维数组的定义,数组定义的另一种格式: 类型 数组名; 例6

3、-2 数组的另外一种定义格式 char charArray; int intArray; myPoint points; 这两种格式的说明完全等价。,一维数组的初始化,数组定义后还不能立即使用,需要进行初始化的步骤。 数组的初始化分为静态初始化和动态初始化两种,这两种方法都可以得到数组对象。 所谓静态初始化就是在定义数组的同时,直接列出各个元素的值,系统根据这些值的个数及类型,为数组分配相应的空间,并把这个内存块的首地址记录下来。数组在内存中对应着一片连续的存储空间,在访问数组元素时可以充分利用这个特点。所以只需要记录下首地址及每个元素所占内存的大小,就可以很方便地找到数组任一个元素的存储位置

4、了。,一维数组的初始化,例6-3 基本数据类型数组的静态初始化 int intArray1 =1, 2, 3, 4; /定义了一个含有4个元素的int型数组 int ages2 = 34, 12, 45; /定义了一个含有3个元素的int型数组 double heights = 4.5, 23.6, 84.124, 78.2, 61.5; /含5个双精度型元素 boolean tired = true, false, false, true; /含4个布尔型元素 char vowels = a, e, i, o, u; /含5个字符型元素 char a =A,B, C, D, E, F, G,

5、 H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; /英文字母数组,一维数组的初始化,动态方式中必须使用运算符new为数组分配空间,同时还可以赋初值。这和对对象的操作是类似的。 设已经定义了数组,数组初始化的格式如下: 数组名 = new 类型数组大小; 数组定义与初始化语句合在一起,如下所示: 类型 数组名 = new 类型数组大小; 类型 数组名 = new 类型数组大小;,一维数组的初始化,现在初始化例6-1中定义的字符数组charArray,语句如下: charArray = new char20; 最多含有20个字符的数

6、组,到目前为止还没有被赋值。 动态初始化时数组元素中的初始值是何时来赋?如何来赋呢? 使用new语句创建数组后,系统自动为数组元素赋予默认值。对数值类型的元素,默认值为相应类型的0;字符串类型非常特殊,系统自动为它赋初值null。,初始化示例,例6-5 数组的默认初值 String names = new String4; /含4个字符串 int a = new int3; /含3个整型数 System.out.println(names0); / 输出null System.out.println(a0); / 输出0 例6-5中,在输出names0之前,程序没有显式地给它赋任何值,而是由系

7、统给它赋了默认值,输出的结果是null。 如果不想使用默认值,可以使用赋值语句赋初值,见下例。 例6-6 字符串数组的初始化 String names ; names = new String4; /含4个元素 names0 = “Georgianna“; /给每个元素分别赋初值 names1 = “Jen“; names2 = “Simon“; names3 = “Tom“;,对象数组的初始化示例,若数组元素是类类型时,初始化的过程要复杂得多。要先使用new运算符为数组本身申请空间创建数组,然后再分别对各个数组元素进行初始化,并且对每个数组元素都要进行初始化。 例6-8 对象数组的初始化 p

8、oints = new myPoint10; 这条语句创建了有10个myPoint类型元素的一维数组,实际上它在内存中分配了10个连续的存储单元,每个单元能存放一个地址,目前仅有null值。接下来,需要为每个元素创建相应的对象,共10个: points0 = new myPoint(); points1 = new myPoint(); points9 = new myPoint(); 也可以使用循环语句来完成: for(int k = 0; k points.length ; k+) pointsk = new myPoint();,混合使用示例,例6-9 静态初始化和动态初始化的混合使用示

9、例 class BankAccount private String ownerName; /账户名 private int accountNumber; /账号 private float balance; /余额 BankAccount(String name, int Number, float ba) ownerName = name; accountNumber = Number; balance = ba; ,混合使用示例,现在说明一个含5个元素的数组,并在说明的同时赋初值: BankAccount accounts = new BankAccount(“Zhang“, 10037

10、, 100.00f), new BankAccount(“Li“, 50104, 2380.00f), new BankAccount(“Wang“, 21983, 500.00f), new BankAccount(“Liu“, 10042, 175.56f), new BankAccount(“Ma“, 21112, 924.02f) ;,实例,子类的实例可以看作是父类的特例,所以可以说明父类型的数组,但元素初始化为子类的实例。如: 例6-10 父类的数组保存子类的实例 Object points; /先说明父类类型的一个数组 points = new myPoint 100; /创建时使

11、用子类类型 这意味着子类的实例可以赋给父类的引用。但两者互换则是不允许的,例如: myPoint points; /先说明子类数组 points = new Object 100; /再创建父类的实例,错误! 是不允许的。父类的实例不能给子类的引用赋值。,多维数组的说明,多维数组即是数组的数组。数组的定义可以嵌套, Java提供了定义多维数组的简单格式,说明多维数组时使用类型及多对方括号就可以了。 以二维数组为例,定义格式为: 类型 数组名 ; 也可以采用另外的定义方式: 类型 数组名; 类型 数组名 ;,二维数组示例,例6-11 二维数组说明的例子 int intArray1 ; /定义了二

12、维整型数组 int intArray2 ; int intArray3 ; 在程序的同一行中也可以同时说明多个数组变量,如: int oneDimension, twoDimension ; 这一行语句声明了一个一维数组oneDimension和一个二维数组twoDimension,而 int a, b ; 声明的是一个int变量a和一个一维整型数组b。 如果要指定数组大小时,必须在使用new关键字创建时才允许,不使用关键字时不能任意指定。下面都属于静态数组说明,会引起编译错误的: int errarrArray123; int errarrArray2 4 = new int 34;,多维数

13、组的初始化,多维数组的初始化也有静态与动态两种方式。 静态初始化,以二维数组为例,说明并初始化语句如下: int intArray = 2,3, 1,5, 3,4; 初始化时,不需要指出数组每一维的大小,系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小。Java语言规定,对于二维数组,在内存中它的存储顺序是按行优先次序存储,也就是一行一行地存放,当一行存放完毕,再存储下一行。,多维数组的初始化,动态初始化,有两种分配内存空间的方法。 第一种,直接为每一维分配空间,仍以二维数组为例,格式如下: 类型 数组名 = new 类型数组第一维长度arrleng1数组第二维长度arrleng2

14、; 数组名是一个合法的标识符,数组第一维长度arrleng1和数组第二维长度arrleng2分别为数组各维的大小,这里要求可以是一个整型常量或是表达式,类型指的是数组元素的类型。 例如: int aArrayVar = new int23;,二维数组创建示例,例6-12 二维数组创建示例 int twoDim1 = new int 4 ; /4行 twoDim10 = new int5; /5列 twoDim11 = new int5; twoDim12 = new int5; twoDim13 = new int5; 可以换为下列简捷形式: int twoDim1 = new int 45;

15、 还可以是下列的形式: int twoDim1 = new int 4 ; for (int j = 0; j twoDim1.length; j+) twoDim1j = new int5; 这三种语句形式都是创建一个4行5列的二维数组。,多维数组的初始化,多维数组分配空间的第二种方法,从最左维起(而且必须从最左维开始),依次为每一维分配内存,如创建二维数组的一般格式为: 类型 数组名 = new 类型 数组第一维长度arrleng1 ; 数组名0 = new类型 数组第二维长度arrleng20; 数组名1 = new类型数组第二维长度arrleng21; 数组名数组第一维长度arrleng1 - 1 = new类型数组第二维长度arrleng2k; 该说明创建的数组第一维大小是arrleng1,即有arrleng1行。第二维的大小可以相同,也可以不同。如果所有的第二维长度都相同的话,即第二维的大小一致,则说明的是一个矩阵型

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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