Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计

上传人:E**** 文档编号:89243625 上传时间:2019-05-22 格式:PPT 页数:112 大小:374.51KB
返回 下载 相关 举报
Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计_第1页
第1页 / 共112页
Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计_第2页
第2页 / 共112页
Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计_第3页
第3页 / 共112页
Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计_第4页
第4页 / 共112页
Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 ppt 作者 于红 第6章_实用类与类的设计(112页珍藏版)》请在金锄头文库上搜索。

1、第6章 实用类与类的设计,在Java语言中,类库为程序员提供了很多实用类,典型的有:用于处理字符串的类,用于描述数据结构的类和接口,用于处理正则表达式的类和接口,以及一些常用的工具类,本章在介绍这些内容后,用实例说明程序员在开发项目时类的设计方法。,6.1串分解类 在实际项目里,串分解类StringTokenizer很实用,例如:分析一个字符串的内容时,可能需要按照一定的规则将一个字符串拆分为若干子串,常见的分析方法是以分隔符为界,将字符串分解成一个个“单词”,这里“单词”的含义可以理解为语言符号,不单单指英文单词,分隔符可以默认或由程序员指定。 例如:把字符串“hi,This is a St

2、ringTokenizer Test。”中的单词逐个解析出来,就可以通过StringTokenizer类完成该功能。,1StringTokenizer类的位置 该类在java.util包中,因此,要使用该类,必须导入java.util包。 2StringTokenizer类常用的三个构造方法 StringTokenizer类有3个常用的构造方法,用法如下。,(1) StringTokenizer(String str) :构造一个用来解析参数str的StringTokenizer对象。默认的分隔符是“空格”、“制表符(t)”、“换行符(n)”和“回车符(r)”。 (2)StringTokeni

3、zer(String str, String delim) :构造一个用来解析参数str的StringTokenizer对象,用参数delim来指定分隔符,分隔符要用双引号括起来,可以同时指定多个分隔符,此时只要把各分隔符顺序写下来即可。 (3)StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析参数str的StringTokenizer对象,并用参数delim来指定分隔符,同时,指定是否返回分隔符,即是否将每个分隔符作为一个单词。,3StringTokenizer类的其他常用方法 除了构造方法之外,

4、StringTokenizer类还有其他方法,常用方法如下。 (1)int countTokens():如果采用构造方法1或2,返回的是剩余单词的数量。 (2)boolean hasMoreTokens() :返回StringTokenizer类对象中是否还有单词。 (3)boolean hasMoreElements() :返回StringTokenizer类对象中是否还有单词。,(4)String nextToken() :返回从当前位置到下一个分隔符的字符串,主要用于获取字符串的子串,一般与hasMoreTokens配合使用,用hasMoreTokens判断是否还有单词,如果返回ture

5、,则用nextToken获取下一个单词。 (5)Object nextElement() :返回从当前位置到下一个分隔符的元素,返回类型为Object。 (6) String nextToken(String delim) :与nextToken()方法类似,以指定的参数delim作为分隔符返回结果。,6.2正则式 正则表达式在字符串处理方面有着强大的功能,是JDK1.4新增特性之一。对于简单的字符串处理,可以采用前面章节讲过的String,StringBuffer或者StringTokenizer,但是对于复杂的字符串处理,采用正则表达式会让其变得容易。通俗地讲,正则表达式是一个描述模式特征

6、的“字符串”,写好正则表达式后,用这个正则表达式去匹配另一个“字符串”,给出“字符串”是否符合这个正则表达式的特征。,6.2.1正则式的语法 正则表达式由普通字符,元字符以及限定符组成。 1普通字符 字母(UNICODE字符)、数字、下划线以及不属于元字符的标点符号,都是“普通字符”。正则表达式中的每个“普通字符”,直接与字符串中的字符匹配。例如:正则表达式“dlou”,在匹配字符串“abdloucde”时,匹配结果是:成功;匹配到的内容是:“dlou”。,2元字符 正则表达式中的特殊符号称为元字符。 (1)元字符“”:表示括号中任意一个字符,其中: abc:表示 a、b 或 c中的任意一个字

7、符; abc:表示除了 a、b 或 c之外的任意一个字符; a-zA-Z:表示a 到 z 或 A 到 Z中的任意一个字符,边界字母包括在内; a-dm-p:表示a 到 d 或 m 到 p中的任意一个字符,即a-dm-p,可理解为并集; a-z&def:表示在a到z中并且在 d、e 或 f中的任意一个字符,可理解为交集; a-z&bc:表示在a到z中并且不是b、c的任意一个字符,即ad-z,可理解为差集; a-z&m-p:表示在a 到 z中并且不在m到p中的任意一个字符,即a-lq-z,可理解为差集。,(2)其他元字符:用于匹配“多种字符”中的任意一个字符,例如,表达式 “d“ 可以匹配任意一个

8、数字,只能是一个,而不是多个,表6-1列出了这些特殊元字符及其含义。 表6-1元字符及其含义,3限定符 在正则表达式中常使用限定符对元字符出现的次数进行限定。 元字符中,在匹配的时候,经常出现同类字符重复出现的情况,例如匹配邮政编码,要重复6次数字,如果用限定符(即:修饰匹配次数的特殊符号),那么不用重复书写表达式就可以实现重复匹配。只要把“次数修饰”放在“被修饰的表达式”后边即可。例如前面匹配城市邮政编码的例子可以这样写:“d6”,“6”表示重复6次前面的表达式。常用限定符及其含义如表6-2所示。,表6-2限定符及其含义,6.2.2 正则式的使用 掌握了正则表达式的基本语法后,来看一下在Ja

9、va中如何使用正则表达式解决实际问题。例如判断某个字符串是否符合某种格式约束,此时可以用正则表达式来判断。Java中提供了Pattern和Matcher类完成正则表达式的程序功能。Pattern为正则表达式的编译表示形式,正则表达式必须首先被编译为此类的实例,也称为模式。然后,用得到的模式创建 Matcher 对象,用该对象完成任意字符序列与正则表达式的匹配过程。这两个类在java.util.regex包中,因此,要使用这两个类,必须导入java.util.regex包。,1Pattern类 Pattern类的常用方法如下: (1)static Pattern compile(String r

10、egex):该方法为静态方法,将给定的正则表达式regex编译到模式Pattern中,即根据正则表达式regex获得模式Pattern对象。 (2)public Matcher matcher(CharSequence input):该方法用于建立给定输入input与此模式的匹配器Matcher。参数input 是要匹配的字符串,返回值Matcher对象是此模式的新匹配器。,例如:正则表达式“d6”,用于匹配邮政编码,构建模式对象的代码: String regex=“d6“; Pattern mailCodePatt= Ppile(regex); 字符串regex为正则表达式,其中的第一个“”

11、为转义符。通过静态方法compile()获得模式对象mailCodePatt后,通过方法matcher(CharSequence input)创建匹配器。 String input=“116023“; Matcher m=mailCodePatt.matcher(input); 其中,对象m为建立好的匹配器,可以使用它的方法执行不同的匹配过程。,2Matcher类 Matcher类的常用方法如下: (1)public boolean matches()方法:尝试将整个输入序列与该模式匹配。如果匹配成功,则可以通过group()方法获取匹配的信息。 特别提示:当且仅当整个输入序列匹配此匹配器的模

12、式时才返回 true。 (2)public boolean lookingAt()方法:从输入序列的开头开始与该模式匹配,与matches()方法不同的是它不需要匹配整个区域。如果匹配成功,则可以通过group()方法获取匹配的信息。,(3)public boolean find()方法:尝试查找与该模式匹配的输入序列的下一个子序列。该方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则接着以前匹配操作没有匹配的第一个字符开始继续匹配下一个序列。如果匹配成功,则可以通过 group()方法获取匹配的信息。 在实际应用中根据需要选择一种匹配方法。 (4)pu

13、blic String group()方法:用于返回由以前匹配操作所匹配序列的子序列。 当然,Matcher类还有很多其他方法,这里不逐一介绍,如需要可参考Java帮助文档。,6.3集合框架 首先对Java集合框架做一个概括性的介绍,对Java集合框架体系有个总体认识,再介绍几种常用的用于描述数据结构的类。更多关于集合中的接口和类的使用方法,请参看Java帮助文档。,6.3.1 概述 数据结构对程序设计有着重要的作用,用来存储对象。Java集合框架主要解决对象的持有问题。在面向对象的程序语言中,用接口和类描述数据结构,这些接口和类中包含对数据结构操作的方法。Java语言中,设计者对常用的数据结

14、构和算法做了一些规范和实现,用不同的接口和类描述不同结构类型。所有抽象出来的数据结构和操作统称为Java集合框架(Java Collection Framework)。Java程序员在具体应用时,不必考虑数据结构和算法的具体实现细节,只需要用这些类创建对象,然后直接应用这些对象即可。这样就大大提高了编程效率。,1Collection Collection是集合接口,持有一组对象,有两个子接口Set和List。 (1)List子接口: 元素可以重复,元素按照插入的顺序排序。可以随机访问,提供了按位置添加、删除和访问元素的方法。插入和删除元素效率低,因为在插入或删除元素的时候会引起其他元素位置的变

15、动。 (2)Set子接口:元素不允许重复,元素使用自己内部的排序机制。检索元素效率低,删除和插入元素效率高,插入和删除不会引起其他元素位置的变动。,关于List和Set的具体实现类: List的实现类有表示动态数组的ArrayList,表示链表的LinkedList,这两个类是非线程安全的。Vector是线程安全的List实现类,Stack是Vector的子类。 Set的实现类有HashSet、TreeSet以及子类LinkedHashSet,这三个类是非线程安全的。TreeSet是基于树结构的集合,LinkedHashSet具备按照插入先后顺序访问的功能,HashSet访问元素的顺序是不确定

16、的。,2Map Map接口为Key/Value对的集合,与Collection的主要区别在于存储的元素是由一个对象还是由两个对象构成的,Colletion的每个元素都是一个对象,而Map中每个元素有两个对象:Key和Value。Map也不允许有重复的元素,是否重复以key来判断,每个Key最多只能对应一个Value。,Map的两个常用实现类为HashMap和TreeMap。HashMap采用散列表这种数据结构存储数据,允许把任何数量的Key/Value数据对存储在一起,Key和Value都可以为null。Key不可以重复,如果重复了,先前的Value将会被替换掉。在存储的元素增加到一定程度时,容量会自动增加,什么时候增加容量取决于装载因子,例如装载因子为0.5,那么存储的元素达到总容量的50%时,容量就会自动增加一倍。其查找效率非常高,是一种典型的用空间换时间的结构。TreeMap是基于红黑树的原理实现的,它实现了Sorte

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

最新文档


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

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