第5章 常用类与异常处理.ppt

上传人:京东小超市 文档编号:5820457 上传时间:2020-08-10 格式:PPT 页数:61 大小:342.50KB
返回 下载 相关 举报
第5章 常用类与异常处理.ppt_第1页
第1页 / 共61页
第5章 常用类与异常处理.ppt_第2页
第2页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章 常用类与异常处理.ppt》由会员分享,可在线阅读,更多相关《第5章 常用类与异常处理.ppt(61页珍藏版)》请在三一文库上搜索。

1、Java实用教程(第3版 ) 第5章 常用类与异常处理 5.1 Object类 5.3 包装类 5.4 Math类 5.5 Random类 5.7 正则表达式 5.8 异常处理 5.2 字符串类 5.6 日期类 5.9 综合实例 崩 昆 万 根 宽 囊 找 宇 捞 尊 裁 斧 恭 蔼 蒋 方 套 罐 狄 佩 钦 惹 奢 尔 峻 丝 娩 舌 醇 修 勋 嵌 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.1 Object类 5.1.1 equals()方法 equals()方法用于判断一个对象是否等于另外一个对象,实际上是

2、比较两 个引用是否指向同一个对象。如果两个引用指向同一个对象,equals()方法才 返回true。其方法的源代码为: public boolean equals(Object obj) return (this=obj); 在实际编程中,更关心被比较的两个引用所指向的对象的状态(或属性) 是否相同。许多Java类都重写了这个方法,如String、Data、基本数据类型的 包装类。 运算符“= =”用来比较两个运算对象是否相等,这两个运算对象既可以是 基本类型,也可以是引用类型。当两个运算对象都是引用类型时,那么这两 个引用变量必须都引用同一个对象才返回true。“= =”用于String对象

3、表示比较 的是否是同一个串对象,当用于比较两个字符串是否相等时,应使用equals() 方法。 【例5.1】综合运用“= =”和equals()方法。 纱 新 环 梭 院 夹 皖 沦 驭 瘟 埋 玄 照 硼 挑 油 帜 问 央 双 柬 赖 拉 约 写 碗 靖 伍 快 厘 损 叮 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.1.2 hashCode()方法 散列码(hash code)是由对象导出的一个整型值,主要是将对象作为key, 用于Hash表中,通常需要子类对该方法进行重写。常见的String类及基本数据 类型

4、的包装类如Integer、Long类等都已对HashCode()和equals()方法进行了重 写,保证:若obj1.equals(obj2),则obj1.hashCode()=obj2.hashCode()。其含义 是:若对象obj1和对象obj2按对象的状态(或属性或内容)是相等的,则它们的 hashCode值应相同。即对象的hashCode值应由对象的状态决定的。例如,两 个不同的String对象只要包含相同的字符序列,其hashCode值就相同。 【例5.2】使用HashCode()方法生成对象的散列码。 匡 琶 保 维 寇 鞭 沦 琼 煞 把 旦 翠 取 堡 窥 浪 誓 炎 钦 闺

5、论 冷 斧 茧 岗 乘 衍 蛹 填 违 揍 蜕 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.1.3 toString()方法 toString()方法返回对象的字符串表示,默认时,其格式为“类名对象的 十六进制哈希码”。其方法的源代码如下: public String toString() return getClass().getName() + “ + Integer.toHexString(hashCode(); 当Java系统处理对象时,每当需要将对象转成串时,都会自动调用该方 法。当定义自己对象时,应该重写

6、该方法,以返回自己对象有明确含义串的 表示。许多Java类,如Date、String、StringBuffer和包装类都重写了toString() 方法,返回有实际意义的内容,例如下面的语句: System.out.println(new Object().toString(); / 显示 java.lang.Object10b30a7 System.out.println(new Integer(56).toString(); / 显示56 System.out.println(new String (“hello“).toString(); / 显示hello 以上语句等价于: Syste

7、m.out.println(new Object(); / 显示 java.lang.Object10b30a7 System.out.println(new Integer(56); / 显示56 System.out.println(new String(“hello“); / 显示hello 肛 专 巍 辅 状 惨 似 南 斯 虚 尹 龋 糜 诣 写 绣 育 内 捶 暗 俊 沦 坡 染 脊 惧 渣 聘 蛀 嵌 堤 浑 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.1.3 toString()方法 当System.

8、out.println()方法的参数是Object类型时,println()方法会自动调 用Object对象的toString()方法,然后显示toString()方法返回的字符串。 【例5.3】使用toString()方法显示字符串。 TestToString.java class TestToString private String s = “spring “; public TestToString(String str) this.s = str + this.s; public static void main(String args) TestToString test = ne

9、w TestToString(“hibernate “); System.out.println(test); System.out.println(test.s); public String toString() / 重写Object类的toString()方法 this.s = “struts “ + this.s; return s; 程序运行结果: struts hibernate spring struts hibernate spring 览 赦 怎 舅 官 狂 蘑 颅 照 猎 雪 絮 栏 莎 呻 橱 瓦 贩 眺 狼 遇 镁 倾 往 乃 蛔 版 挚 溺 狠 沟 兴 第 5 章 常

10、 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.2 字符串类 5.2.1 String类 一个字符串常量是用双引号括住的一串字符,如“Hello“。一个字符串常 量是一个String对象。Java.lang.String类代表只读的不可修改的字符序列,两 个字符串对象使用“+”或“+=”运算符,会产生新的字符串对象。若Java程序中 有多处出现字符串常量“Hello“,则Java编译程序只创建一个String对象,所有 的字符串常量“Hello“将使用同一个String对象,例如下面的语句: String s1=“Hello“; St

11、ring s2=“ Hello“; String s3=new String(“Hello“); String s4=new String(“Hello“); 则:s1与s2是同一个对象,而s1、s3与s4是三个不同的对象,尽管它们所 表示的字符序列相等。 String类的方法众多,有如下常用方法。 int length():返回字符串的长度,例如下面的语句: String s1 = “hello”; System.out.println(s1.length(); / 显示结果为5 (2)char charAt(int index):返回指定索引处的char值,其中index的取值 范围是0字

12、符串长度-1,例如下面的语句: String s1 = “hello world“; System.out.println(s1.charAt(6);/ 显示结果为w 奶 雕 汛 痢 丹 戍 妊 间 你 纱 眯 札 舔 望 疏 多 搐 檄 企 唇 凹 咙 尝 威 猎 翟 瀑 症 女 蝶 绿 灸 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.2.1 String类 (3) int compareTo(String another):按Unicode码值的大小逐字符比较两个 字符串的大小。如果源串较小,则返回一个小于0的值

13、,如果相等则返回0, 否则返回一个大于0的值,例如下面的语句: System.out.println(“hello“.compareTo(“Hello“);/ 显示-4 System.out.println(“hello“.compareTo(“hello“);/ 显示0 System.out.println(“Hello“.compareTo(“hello“);/ 显示1 (4) String concat(String str):把字符串str附加在当前字符串的末尾,例 如下面的语句: String str = “hello”; String str2 = str.concat(“worl

14、d”); System.out.println(“str”);/ 显示 hello System.out.println(“str2”);/ 显示 hello world (5) equals(Object obj)和equalsIgnoreCase(String str):判断两个字符串对 象的内容是否相同。两个方法的区别在于:equals()方法区分字母的大小写, 而 equalsIgnoreCase()方法不区分字母的大小写,例如下面的语句: String str1=”hello”; String str2=”Hello”; System.out.println(str1.equals

15、(str2);/ 显示true System.out.println(str1.equalsIgnoreCase (str2);/ 显示false 引 阎 瘫 递 抢 反 缠 遭 垫 弄 邵 葱 碴 巧 童 颜 榨 椽 钒 汗 牢 侄 黎 遮 故 彦 展 透 永 鸣 卿 陨 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.2.1 String类 (6) int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。 int indexOf(String str): 返回指定子字符串在此字符串中第一

16、次出现处的索 引。 int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引 。 int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处 的索引。例如下面的语句: String s1 = “hello world“; System.out.println(s1.indexOf(l);/ 显示2 System.out.println(s1.indexOf(“world“);/ 显示6 System.out.println(s1.lastIndexOf(l);/ 显示9 System.out.println(s1.l

17、astIndexOf(“world“);/ 显示6 (7) String toUpperCase():将此String 中的所有字符都转换为大写。 String toLowerCase():将此String中的所有字符都转换为大写。 String trim():返回字符串的副本,忽略前导空白和尾部空白。例如下面的 语句: String s1 = “Welcome to Java word“; String s2 =“ hello world “; System.out.println(s1.toUpperCase();/ 显示WELCOME TO JAVA WORD System.out.pr

18、intln(s1.toLowerCase();/ 显示welcome to java word System.out.println(s2.trim();/ 显示hello world 嫩 孩 鸯 狞 潞 水 鼠 尘 邀 芳 吉 冗 捡 葛 世 梳 且 屉 螟 仙 择 哼 瀑 恰 贡 窜 内 辞 百 厅 轻 辑 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.2.1 String类 (8)String substring(int beginIndex):返回一个新的字符串,该子字符串从 指定索引处的字符开始,直到此字符串

19、末尾。 String substring(int beginIndex,int endIndex):返回一个新字符串,该子 字符串从指定的beginIndex处开始,直到索引endIndex -1处的字符。例如下面 的语句: String s1 = “Welcome to Java word“; System.out.println(s4.substring(11);/ 显示Java word System.out.println(s1.substring(11, 15);/ 显示Java (9)static String valueOf():把基本数据类型转换为String类型,例如下面的

20、语句: int i = 123; String s1= String .valueOf(i); System.out.println(s1);/ 显示字符串123 (10) String split(String regex):将一个字符串按照指定的分隔符分隔, 返回分隔后的字符串数组。 取 骗 导 仰 疯 咎 邀 淬 旱 窍 梗 饵 谰 象 疙 逊 骗 闭 碧 寅 匠 妈 馆 匹 摹 棠 稠 载 沿 填 柠 嗣 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.2.1 String类 【例5.4】统计字符串中的单词个数,

21、单词之间用空格分开。 StatisticWords.java public class StatisticWords public static void main(String args) String s = “I am a student I am studying hard“; byte c =s.getBytes();/ 把字符串转换为字节数组 int word=0;/ 判断是否是单词的标识 int num=0;/ 统计单词的个数 int i = c.length; for (int j=0;j 例如,public int read() throws IOException . 若一

22、个方法声明抛出异常,则表示该方法可能会抛出所声明的那些异常 ,从而要求该方法的调用者,在程序中对这些异常加以注意和处理,比如用 try-catch-finally语句来处理。若一个方法没有声明抛出异常,则该方法仍可能 会抛出异常,只不过这些异常不要求调用者加以注意。即使一个方法声明抛 出异常,则该方法仍可能会抛出不在异常列表之中列出的异常。通常异常列 表中的异常,都要求调用者要在程序中明确加以处理的。方式可以是用try- catch-finally语句捕获处理,或者用try-catch-finally捕获处理后再次抛出异常, 从而形成异常处理链。 【例5.19】从键盘读入字符,再输出到控制台。

23、 ThrowsExceptionTest.java import java.io.*; public class ThrowsExceptionTest public static void main(String args) throws IOException int c; while (c = System.in.read() != -1)/从键盘读入数据 System.out.println(c); 热 惩 吱 蜗 蜒 拍 挚 脱 允 景 让 粥 导 润 绞 妆 物 忱 初 掀 户 相 率 拄 扁 详 椰 谈 疗 歼 麦 登 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常

24、用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.8.2 声明抛出异常子句 运行程序,输入任意字符串“abcde”,按下回车键,则在控制台上输出其 机内码。 程序运行结果: 97 98 99 100 101 13 10 怕 痊 骨 粒 甥 佑 墙 搞 戒 逸 蚀 架 答 逾 片 云 阅 但 扬 售 鸿 吊 共 十 粉 界 毕 途 饼 芭 逆 乱 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.8.3 抛出异常语句 声明抛出异常是一个说明性的子句,只是表明一个方法可能会抛出异常 ,而真正抛出异常的动作是由抛出异

25、常语句来完成的,语法格式如下: throw ; 其中:必须是Throwable类或其子类的对象。例如下面的语句 : throw new Exception(“这是一个异常“); 下面的语句在编译时将会产生语法错误: throw new String(“这是一个异常“); 这是因为String类不是Throwable类的子类。 又如: public void f() throws MyException if( a 0 ) throw new MyException(“这是一个异常“); 由于方法f()中可能会抛出MyException异常且该异常调用者应该重视它, 故f()方法首先声明抛出异常

26、MyException,要求编译器对调用者使用f()方法时 是否明确处理MyException异常进行强制检查。其次,当执行到if(a0)语句时 ,若条件为真,则立即抛出MyException异常对象且该方法立即结束,此时该 if()语句到方法f()结束之间的代码不会被执行。 蔽 却 丢 有 卜 况 橙 励 风 您 习 旧 深 仇 押 骋 假 溢 扑 专 皖 穗 搭 冠 千 搁 瓜 腕 床 评 挨 赎 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.8.3 抛出异常语句 【例5.20】从键盘读入字符,显示出其码值。若按了

27、A键,则立即抛出异常 。 ThrowExceptionTest.java import java.io.*; public class ThrowExceptionTest public static void main(String args) int c; try while (c = System.in.read() != -1) if (c != a) throw new Exception(“请输入字母a!“); System.out.println(c); catch (IOException e) System.out.println(e); catch (Exception e

28、) System.out.println(e); 运行程序,输入除字母a的任意字母。 程序运行结果: s java.lang.Exception: 请输入字母a! 叼 韧 戚 惧 稳 更 伦 柬 翘 鸿 部 检 引 赡 愚 层 饿 屎 歌 缠 掏 绊 昏 酪 予 驼 霄 添 澎 茸 剥 耀 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.8.4 自定义异常类 在程序中使用自定义异常类,大体可分为以下几个步骤: (1) 创建自定义异常类。 (2) 在方法中通过throw关键字抛出异常对象。 (3) 如果在当前抛出异常的方法

29、中处理异常,可以使用try-catch语句捕获 并处理;否则,在方法的声明处通过throws关键字指明要抛出给方法调用者 的异常,继续进行下一步操作。 (4) 由方法调用者捕获并处理异常。 【例5.21】使用自定义异常类,当a的值小于10或大于100时,将产生异 常。 拘 姓 预 穷 揽 藏 嘉 墨 谦 毛 孕 崭 凤 倘 锻 浙 撒 码 震 瑞 扶 邓 循 摩 晃 罪 溺 葛 浦 京 及 束 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Java实用教程(第3版 ) 5.8.4 自定义异常类 右击“MyExceptionTest.java”,选择“R

30、un As”“Run Configurations”,如 图5.5所示,选择Main标签页,在“Project”栏中选择“MyProject_05”,在“Main class”栏中选择“MyExceptionTest”, 选择“Arguments”标签页,在“Program argumentds”栏中输入“9”,然后单击“Run”按钮,运行程序。 图图5.5 使用自定义义异常 柯 制 卞 舵 妮 政 就 困 竭 颠 氓 夫 疼 改 醚 泞 沟 参 东 闭 脊 框 写 锚 督 无 薄 亮 丢 饲 碾 湖 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理 Ja

31、va实用教程(第3版 ) 5.9 综合实例 统计任意一个字符串中的英文单词总数、最长单词的长度、最短单词的 长度、单词的平均长度。英文单词定义为字母串,非字母的字符都是单词之 间的分隔符,例如,“ab+12cd*123fdfg%&()as23BG“,则单词总数为5,最长 长度为4,最短长度为2,平均长度为2.4。 思路:识别单词的状态转换图如图5.6所示。 单词外单词内 当前单词不是字母当前单词是字母 当前单词是字母(头) 当前单词不是字母(尾) 图5.6 识别单词的状态转换图 【例5.22】分析字符串,计算英文单词总数、最长单词的长度、最短单 词的长度、单词的平均长度。 戴 委 厉 缘 勺 径 世 蚕 惮 覆 误 椎 毋 鸡 累 毖 澳 王 晾 烁 坑 彼 实 孙 背 号 千 狗 昭 裤 邱 小 第 5 章 常 用 类 与 异 常 处 理 第 5 章 常 用 类 与 异 常 处 理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1