零点起飞学Java之引用数据类型

上传人:宝路 文档编号:48000706 上传时间:2018-07-08 格式:PPTX 页数:39 大小:937.55KB
返回 下载 相关 举报
零点起飞学Java之引用数据类型_第1页
第1页 / 共39页
零点起飞学Java之引用数据类型_第2页
第2页 / 共39页
零点起飞学Java之引用数据类型_第3页
第3页 / 共39页
零点起飞学Java之引用数据类型_第4页
第4页 / 共39页
零点起飞学Java之引用数据类型_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《零点起飞学Java之引用数据类型》由会员分享,可在线阅读,更多相关《零点起飞学Java之引用数据类型(39页珍藏版)》请在金锄头文库上搜索。

1、第6章 引用数据类型 除了简单数据类型外,Java语言还定义了许多复合数 据类型,如数组、字符串、集合等。这些复合数据 类型都是以类的形式进行定义的,包含许多属性和 方法。综合使用简单数据类型和复合数据类型,可 以处理实际需求中遇到的各种数据形式,能够编写 更加复杂的程序。6.1 相同类型的数据数组 数组是Java语言中的一种复合数据类型,是具有相同 数据类型的数据集合。数组中的每个数据称为数组 元素,数组元素是有序的。关于数组的知识主要包 括数组的定义、创建数组、数组的使用及多维数组 ,下面分别进行介绍。6.1.1 定义数组 要使用数组,首先需要定义数组。定义数组的语法 格式有两种,如图6.

2、1所示。 注意:定义数组时不能指定数组的长度。比如 int10array1;,这条语句是错误的。6.1.2 创建数组 要想数组能被真正使用,只定义数组是不够的,还 需要为其分配内存空间和初始化。下面分别进行介 绍。1创建数组 为数组分配了内存空间,才是在物理形式上真正创 建了数组。在Java语言中,所有分配内存的动作都是 由关键字new来完成的。关于new的概念后续章节会 详细说明。由于数组属于复合类型,所以也由new关 键字完成创建。创建数组的语法格式如图6.2所示。1创建数组 另外,可以将定义数组与创建数组合并成一条语句 ,定义数组时即完成创建。数组定义时即完成创建 的语法格式如图6.3所

3、示。2数组初始化 如果用new关键字创建了数组,则系统会使用数据类 型的默认值为数组每一个元素默认初始化。另外, 可以在定义数组的时候完成初始化。定义并初始化 数组的语法格式如图6.4所示。 注意:数组长度指定后不能再改变。6.1.3 使用数组 数组创建完成后即可使用。数组的使用最普遍的就 是访问数组的元素。访问数组元素的语法格式如图 6.5所示。 数组下标从0开始,到数组长度减1结束。另外,可 以通过数组的length属性访问数组的长度。关于属性 的概念后续章节会详细说明。6.1.4 数组的数组多维数组 由于数组的数据类型可以是各种Java数据类型,当然 也包括数组类型。这种数组类型的数组就

4、构成了多 维数组。实际上二维数组是以一维数组为元素构成 的数组。如此递归,可以形成更多维数组。下面以 二维数组为例进行讲解,多维的情形与二维类似。 二维数组的定义语法格式如图6.6所示。6.1.4 数组的数组多维数组 二维数组的创建语法格式如图6.7所示。 二维数组的使用语法格式如图6.8所示。6.2 多个字符字符串 字符串是Java中经常使用的复合数据类型。在本质上 ,字符串实际上为char型数组。字符串由 Java.lang.String类来表示,该类具有一系列的属性和 方法,提供对字符串的各种操作。除了String类, Java还提供了StringBuffer类用来处理可变长度的字 符串

5、。下面分别进行介绍。6.2.1 创建字符串 同其他类型数据一样,要想使用字符串数据,首先 需要创建字符串。创建字符串的语法格式如图6.9所 示。 String作为类,具有不同的构造方法。比较特殊的是 ,String可以同Java中的基本数据类型一样使用,由 系统自动完成创建。作为基本数据类型使用的语法 格式如下所示。6.2.1 创建字符串 注意:字符串变量的值必须位于“”号内。String类 型的字符是长度不能改变的。比如,代码String s=“ab”;s=“abc”;其实创建了两个字符串对象,第 一个为“ab”,长度为2;第二个为“abc”,长度为3。6.2.2 连接字符串 字符串连接是程

6、序中经常进行的操作,用来将多个 字符串连接在一起形成一个字符串。字符串连接使 用+(加法)运算符进行。在Java语言中,采用+运 算符还可以直接连接字符串和基本数据类型中的数 值类型。此时,+运算符是作为字符串连接操作处理 ,其他数值类型自动转换为字符串。 说明:在字符连接中,Java语言实际是实现了对+ 运算符的重载。+运算符提供的不再是数值计算中的 加法功能,而是字符串的连接功能。6.2.3 比较字符串 在实际编程过程中,经常需要对两个字符串变量的内容 进行比较。Java语言中的String类提供了几个方法分别适 合不同情况的字符串比较,如表6-1所示。 注意:比较字符串值是否相等不能使用

7、= =。当用= =来 比较两个对象时,实际的运算是判断是否为同一个对 象。即使内容相等,如果为不同的对象,也就是对应的 是不同内存地址,返回值也为false。方 法 名 称方 法 功 能equals()比较较两个字符串的内容是否相等,返回boolean值值equalsIgnoreCase()忽略大小写,比较较两个字符串的内容是否相等,返回boolean值值compareTo()按词典顺序比较字符串,返回int值6.2.4 字符串其他常用操作 字符串String作为数组和类,本身提供了许多方法用 来进行各种复杂操作。表6-2列出了字符串一些常用 方法及简单说明。 字符串的操作方法很多,上面仅列出

8、了一些常用的 ,实际编程过程中可以查看相关API。方 法 名 称方 法 功 能length()返回字符串的长长度toLowerCase()将其中的英文字母转换为转换为 小写toUpperCase()将其中的英文字母转换为转换为 大写charAt(int index)返回指定索引处处的字符indexOf(String str)返回指定字符串第一个找到的索引位置substring(int beginIndex)返回指定索引处处到字符串末尾的子串substring(int beginIndex, int endIndex)返回指定索引范围的子串6.2.5 StringBuffer类 String对象

9、的长度是不可改变的,如果使用String类 频繁地进行字符串拼接操作,那么会产生很多对 象。针对此类性能问题,Java语言提供了另一个类 StringBuffer可以特别用来处理此类问题。 StringBuffer类主要包含如下一些常用方法,如表6-3 所示。方 法 名 称方 法 功 能length()返回字符串序列的长长度insert()在字符串中间间插入(提供了参数不同的多个方法)append()在字符串末尾追加(提供了参数不同的多个方法)setCharAt(int index, char ch)设设置指定索引位置为为指定字符toString()返回字符串6.3 不同类型的数据集合 集合是

10、多个对象的容器,容器里聚集了一组对象。 前面介绍了数组类型,数组类型是有相同数据类型 的数据集合。如果需要将不同数据类型的多个对象 组织在一起,就需要使用集合。在Java语言中,集合 本身是一个框架体系,包含各种集合类。下面分别 进行介绍。6.3.1 集合的基础集合框架 在Java语言中,各种集合类通过集合框架进行组织。 集合框架包括各类集合接口、接口实现类、集合操 作,通过继承关系形成自上而下的体系结构。集合 框架的核心接口为Collection、List、Set和Map,其 继承关系如图6.11所示。6.3.1 集合的基础集合框架 从图中可以看出,List和Set继承了Collection

11、,Map则独成一 体。下面对这几类接口做简单介绍。 Collection接口是Java集合框架的最顶层接口。Collection中存放 的对象允许重复,没有顺序。Collection接口定义了一系列的操 作集合中元素的基本方法。具体可以参考JDK API文档。 List接口继承自Collection接口。List提供了对象的有序存放,其 中存放的对象也允许重复。在Collection接口定义的方法基础上 ,List接口进行了扩展,定义了一些与顺序操作相关的方法。 Set接口也继承自Collection接口。Set更像数学概念中的集合, 存放的对象不允许重复,也没有顺序。Set接口没有对 Col

12、lection接口进行扩展。6.3.1 集合的基础集合框架 从图上也能看出,Map接口是相对独立的。Map提供 了一种“键-值”对映射的方式存放对象。Map接口定 义了一组专门的处理该结构数据的方法。具体可以 参考JDK API文档。 Java语言的集合框架极大地方便了程序开发,具有很 多优越性。集合框架内置了许多有用的数据结构和 算法,用户只需集中精力在程序的重要部分上。这 些数据结构和算法都通过了大量的实践验证,具有 较高的性能和质量,用户只要调用即可获得很好的 服务。另外,在某些程度上,集合框架也提高了软 件的重用性、稳定性。6.3.2 访问集合元素 对所有集合类最经常的操作就是访问集合

13、中的元 素。在Java语言中定义了迭代器Iterator接口用于访问 集合中的元素。下面列出了Iterator接口中定义的方 法,如表6-4所示。 在具体使用过程中,首先需要获得集合类的迭代器 Iterator,然后利用迭代器反复迭代获得每一个元 素。迭代器的具体使用在这里不再举例,请参考下 面介绍的集合类的示例。方 法 名 称方 法 功 能hasNext()在迭代器当前位置,是否还还有下一个元素next()返回下个元素remove()删除迭代器最后返回的那个元素6.3.3 有序存放列表(List) List提供了对象的有序存放,其中存放的对象允许重 复。List接口的具体实现类主要有Arra

14、yList和 LinkedList。其中ArrayList以一种类似数组的形式存 储对象,对象的随机访问速度较快。LinkedList实现 机制是采用链表,适合于在链表中间需要频繁进行 插入和删除对象的操作。在实际的编程过程中,可 以根据具体需要进行相应选择。6.3.4 无序不重复集合(Set ) Set中存放的对象不允许重复,没有顺序。Set接口的 具体实现类有HashSet和TreeSet。其中HashSet能快速 定位一个元素,但是放到HashSet中的对象需要实现 hashCode()方法。TreeSet将放入其中的元素按顺序存 放,要求放入其中的对象是可排序的。6.3.5 键值对应映

15、射(Map ) Map提供了一种“键-值”对映射的方式存放对象。其 中键和值也都可以是对象。对于键对象来说,像Set 一样,一个Map容器中的键对象不允许重复。这就 保证了键的唯一性,可以根据键对象快速定位值对 象。对于值对象来说,则没有唯一性的要求,可以 将任意多个键都映射到一个值对象上。Map接口的 具体实现类有HashMap和TreeMap。其中HashMap也 用到了哈希码的算法,以便快速查找一个键。 TreeMap则是对键按序存放,要求放入其中的对象是 可排序的。6.4 增强for循环 在J2SE 5.0 版本以后,Java语言为迭代集合和数组提 供了增强的for循环。增强的for循

16、环提供了一个简 单、兼容的语法,采用for-each语句形式。增强for循 环的语法格式如图6.12所示。 其中,参数type表示数组或集合元素的数据类型。参 数elementName表示元素名称,可以由用户任意定义 ,但需要符合Java标识符的命名规范。参数array表 示要迭代的数组,而collection表示要迭代的集合, 应该为两者之一。6.5 泛 型 泛型是J2SE 5.0版本中引入的最大特性,使用泛型编 写的程序具有更好的安全性和可读性。泛型的使用 范围很广,可以应用于集合类、定义泛型类、泛型 方法等,下面对泛型的使用进行详细介绍。6.5.1 泛型在集合中的应用 泛型对集合类来说有着非常重要的作用。在集合中引入 泛型,能够提供编译时的类型安全,并且从集合中取得 元素后不必再强制转换,简化了程序代码。定义泛型集 合的语法格式如图6.13所示。 其中,参数Co

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

当前位置:首页 > 中学教育 > 教学课件

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