JAVA课件lesson4PPT教学课件
合集下载
第4讲 Java入门PPT课件
Unicode
浮点:float, double 布尔值:bool
true, false
引用数据类型
类:class 接口:interface 数组:[], ArrayList, Vector
运算符与表达式
运算符
运算符分为运算符、算术运算符、关系运算符、位运算符、逻 辑运算符、条件运算符及条件运算符等。
类和接口:使用名词,且每个单词首字母要大写
例:Person、Car
分隔符
在语句、变量,类和成员、对象和成员和程序之间起 着分割作用的符பைடு நூலகம்。有5种分割符:
圆点(“.”):分割类和成员以及对象和成员
类名.静态成员名 对象名.成员名
分号(“;”):语句结束的标记或者for循环中分隔不同的成分 逗号(“,”):分割多个变量、形参以及实参 空格(“ ”):用于分隔源代码中不同的部分 花括号(“{”及“}”):用于限定某一部分的范围,一定成对使
运算符的四个要素:
操作数目 优先级 结合性 操作类型
运算符
赋值运算符的符号是 “=”
赋值运算是将一个表达式的值赋给一个左值 赋值时必须要求左值和右值的类型一致,如果类型不匹配时需要能自
动转换为对应的类型
算术运算符分为一元运算符和二元运算符两种
一元运算符:正(“+“)、负(”-“)、自增(”++“)和自减( ” --“)
* @param String 要打印的字符串
*
* @return 没有返回值
*/
标识符
变量、类、对象和方法等元素的名字 标识符应当在某种程度上反映所命名元素(变量、类
、对象和方法)的实际意义
合适的标识符加上良好的注释风格是提高程序可读性的必备要 素
浮点:float, double 布尔值:bool
true, false
引用数据类型
类:class 接口:interface 数组:[], ArrayList, Vector
运算符与表达式
运算符
运算符分为运算符、算术运算符、关系运算符、位运算符、逻 辑运算符、条件运算符及条件运算符等。
类和接口:使用名词,且每个单词首字母要大写
例:Person、Car
分隔符
在语句、变量,类和成员、对象和成员和程序之间起 着分割作用的符பைடு நூலகம்。有5种分割符:
圆点(“.”):分割类和成员以及对象和成员
类名.静态成员名 对象名.成员名
分号(“;”):语句结束的标记或者for循环中分隔不同的成分 逗号(“,”):分割多个变量、形参以及实参 空格(“ ”):用于分隔源代码中不同的部分 花括号(“{”及“}”):用于限定某一部分的范围,一定成对使
运算符的四个要素:
操作数目 优先级 结合性 操作类型
运算符
赋值运算符的符号是 “=”
赋值运算是将一个表达式的值赋给一个左值 赋值时必须要求左值和右值的类型一致,如果类型不匹配时需要能自
动转换为对应的类型
算术运算符分为一元运算符和二元运算符两种
一元运算符:正(“+“)、负(”-“)、自增(”++“)和自减( ” --“)
* @param String 要打印的字符串
*
* @return 没有返回值
*/
标识符
变量、类、对象和方法等元素的名字 标识符应当在某种程度上反映所命名元素(变量、类
、对象和方法)的实际意义
合适的标识符加上良好的注释风格是提高程序可读性的必备要 素
Java电子教案第4章精品PPT课件
界面
图4.2 JAVA常用GUI组件
4.2 AWT和Swing
AWT
抽象窗口工具包AWT (Abstract Window Toolkit) 是 Java 提供的建立图形用户界面GUI (Graphics User Interface)工具集,可用于生成现代的、鼠标控制的图 形应用接口,并且可以无需修改,就可以在各种软硬件 平台上运行。
java.awt包中提供了GUI设计所使用的类和接口,提供了 各种用于GUI设计的标准类,图4.3显示了AWT中主要类之 间的关系。由图可知,AWT中的类按其功能的不同可分为 5大类。 图4.3 AWT类层次
基本GUI组件类
➢ Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方式 显示在屏幕上并能与用户进行交互的对象,例如一 个按钮,一个标签等。组件不能独立地显示出来, 必须将组件放在一定的容器中才可以显示出来。用 来提供人机交互的基本控制界面
基本图形类
➢ 用于构造图形界面的类,如字体类(Font)、绘图 类(Graphics)、图像类(Image)和颜色类(Color) 等
Swing
组件从功能上分可分为
顶层容器:JFrame、JApplet、JDialog和JWindow共4个。
中间容器:JPanel、JScrollPane、JSplitPane和JToolBar。
和JButton 4.6 HappyChat登录界面 4.7 本章小结 4.8 上机实训
4.1 HappyChat登录界面分析
HappyChat聊天系统的登录程序用于实现用户登录, 已注册用户通过输入用户名和口令在聊天服务器端 进行验证,完整界面如图4.1所示
Java的广泛应用,除归因于其强大的跨平台特性、 完善的安全机制及其分布式计算等特性外,Java提 供的丰富的图形类库也是功不可没。良好的GUI可 以让程序更具有吸引力、更好操作、更容易学习。 Java可以通过图4.2所示的GUI组件进行应用程序界 面的设计
图4.2 JAVA常用GUI组件
4.2 AWT和Swing
AWT
抽象窗口工具包AWT (Abstract Window Toolkit) 是 Java 提供的建立图形用户界面GUI (Graphics User Interface)工具集,可用于生成现代的、鼠标控制的图 形应用接口,并且可以无需修改,就可以在各种软硬件 平台上运行。
java.awt包中提供了GUI设计所使用的类和接口,提供了 各种用于GUI设计的标准类,图4.3显示了AWT中主要类之 间的关系。由图可知,AWT中的类按其功能的不同可分为 5大类。 图4.3 AWT类层次
基本GUI组件类
➢ Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方式 显示在屏幕上并能与用户进行交互的对象,例如一 个按钮,一个标签等。组件不能独立地显示出来, 必须将组件放在一定的容器中才可以显示出来。用 来提供人机交互的基本控制界面
基本图形类
➢ 用于构造图形界面的类,如字体类(Font)、绘图 类(Graphics)、图像类(Image)和颜色类(Color) 等
Swing
组件从功能上分可分为
顶层容器:JFrame、JApplet、JDialog和JWindow共4个。
中间容器:JPanel、JScrollPane、JSplitPane和JToolBar。
和JButton 4.6 HappyChat登录界面 4.7 本章小结 4.8 上机实训
4.1 HappyChat登录界面分析
HappyChat聊天系统的登录程序用于实现用户登录, 已注册用户通过输入用户名和口令在聊天服务器端 进行验证,完整界面如图4.1所示
Java的广泛应用,除归因于其强大的跨平台特性、 完善的安全机制及其分布式计算等特性外,Java提 供的丰富的图形类库也是功不可没。良好的GUI可 以让程序更具有吸引力、更好操作、更容易学习。 Java可以通过图4.2所示的GUI组件进行应用程序界 面的设计
Java_4(面向对象软件开发基础)-PPT课件
第四讲
面向对象的软件开发基础
0
本讲主要内容
面向对象方法的引入
面向对象的基本概念 面向对象软件开发的基本过程 面向对象程序设计方法的特点 面向对象程序设计方法的优点
1
面向对象方法引入
问题域类和 对象 求解域类和 对象
问题域 从现实世界向信息系统过渡 概念模型 现实世界 系统模型
求解域
计算系统
16
对象、类、接口之间的关系
类与类之间的关系:继承(现实世界中相似性 的表示)。
学生、在校生、走读生。 上课、上理论课、上实验课、上习题课
作业:
17
类的抽象-接口
类实现接口 class MyFrame implements ActionListener{ } class MyApp implements Runable{
20
类与对象之间的关系-包含或聚集
用已有的类实例作为类的属性。
Line
Point p1,p2
21
对象与对象之间的关系-依赖
在一个对象的方法中调用另一个对象的方法, 则称该对象向另一个对象发消息,另外一个对 象则称为对此消息响应,结果是执行其的一个 方法。
22
用面向对象方法分析和解决问题
2
4.1面向对象的基本概念
对象:任何可以描述属性和行为的实体,或者 任何可以确定的事物。 类:同种对象的集合,是该集合对象的模板。
实例: 从类模板演绎出的实际具体的对象。
3
现实世界中的类和语言中的类
实体:人(张三、李四)、电话、桌子
概念:质子、力、图形、园、表达式、字 符、整数等
面向对象的软件开发基础
0
本讲主要内容
面向对象方法的引入
面向对象的基本概念 面向对象软件开发的基本过程 面向对象程序设计方法的特点 面向对象程序设计方法的优点
1
面向对象方法引入
问题域类和 对象 求解域类和 对象
问题域 从现实世界向信息系统过渡 概念模型 现实世界 系统模型
求解域
计算系统
16
对象、类、接口之间的关系
类与类之间的关系:继承(现实世界中相似性 的表示)。
学生、在校生、走读生。 上课、上理论课、上实验课、上习题课
作业:
17
类的抽象-接口
类实现接口 class MyFrame implements ActionListener{ } class MyApp implements Runable{
20
类与对象之间的关系-包含或聚集
用已有的类实例作为类的属性。
Line
Point p1,p2
21
对象与对象之间的关系-依赖
在一个对象的方法中调用另一个对象的方法, 则称该对象向另一个对象发消息,另外一个对 象则称为对此消息响应,结果是执行其的一个 方法。
22
用面向对象方法分析和解决问题
2
4.1面向对象的基本概念
对象:任何可以描述属性和行为的实体,或者 任何可以确定的事物。 类:同种对象的集合,是该集合对象的模板。
实例: 从类模板演绎出的实际具体的对象。
3
现实世界中的类和语言中的类
实体:人(张三、李四)、电话、桌子
概念:质子、力、图形、园、表达式、字 符、整数等
java课件lecture4
if ( condition ) statement;
If the condition is true, the statement is executed. If it is false, the statement is skipped.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
• Although it makes no difference to the compiler, proper indentation is crucial
"Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live." -- Martin Golding
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
5-14
Logical Operators
• A truth table shows all possible true-false combinations of the terms • Since && and || each have two operands, there are four possible combinations of conditions a and b
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
JAVA课件第4章
//成员方法, //成员方法, 计算到原点的距离 成员方法
{ return Math.sqrt(x*x+y*y); }
例4-2 学生类
//定义学生类 public class Student //定义学生类 //学生姓名 {public String name; //学生姓名 //学生编号 public String number; //学生编号 //学生年龄 private int age; //学生年龄 private int math,physics; //两门课程成绩 //两门课程成绩 public Student(String na, String nu, int a, int m, int p) {name=na; number=nu; age=a; math=m; physics=p; } public void setMath(int m) {math=m; } public void setPhysics(int p) {physics=p;} public void getMath() {return math;} public void getPhysics() {return physics;} //计算平均成绩 public int average() //计算平均成绩 { return (math + physics)/2; } }
public(公共 公共) (2) public(公共)
public修饰的成员变量可以被程序中的任何类所访问.由于public成 public修饰的成员变量可以被程序中的任何类所访问.由于public成 修饰的成员变量可以被程序中的任何类所访问 public 员变量不受限制, 这易使类的对象引起不希望的修改, 员变量不受限制, 这易使类的对象引起不希望的修改,建议成员变量尽 量不要使用public修饰符. 量不要使用public修饰符. public修饰符
Java第4讲课件
同的方法名、参数列表以及返回值类型。
4.1 类的继承
• 4.1.1重写父类方法
让IT教学更简单,让IT学习更有效
– 从例程4-3的运行结果可以看出,当子类重写父类的方法后,子类 对象将无法访问父类被重写的方法,为了解决这个问题,在Java 中专门提供了一个super关键字用于访问父类的成员。例如访问父
让IT教学更简单,让IT学习更有效
第四讲 面向对象(下)
• 类的继承 • final关键字 • 接口 • 异常 • 包的定义与使用
• 多态
目录
类的继承
让IT教学更简单,让IT学习更有效
Final关键字 抽象类和接口 多态 异常 包 访问控制
4.1 类的继承
• 4.1.1 继承的概念
让IT教学更简单,让IT学习更有效
3.6 static 关键字
• 3.6.2 静态方法
让IT教学更简单,让IT学习更有效
例程3-15的Person类中定义了静态方法sayHello(),在第8行代码处 通过“Person.sayHello()”的形式调用了静态方法,由此可见静态 方法不需要创建对象就可以调用。
3.6 static 关键字
类的成员变量、成员方法和构造方法。接下来分两种情况来学习
一下super关键字的具体用法。 – 1、使用super关键字调用父类的成员变量和成员方法。具体格式
如下:
4.1 类的继承
让IT教学更简单,让IT学习更有效
4.1 类的继承
• 4.1.1重写父类方法
让IT教学更简单,让IT学习更有效
– 2、使用super关键字调用父类的构造方法。具体格式如下:
4.2 final 关键字
让IT教学更简单,让IT学习更有效
4.1 类的继承
• 4.1.1重写父类方法
让IT教学更简单,让IT学习更有效
– 从例程4-3的运行结果可以看出,当子类重写父类的方法后,子类 对象将无法访问父类被重写的方法,为了解决这个问题,在Java 中专门提供了一个super关键字用于访问父类的成员。例如访问父
让IT教学更简单,让IT学习更有效
第四讲 面向对象(下)
• 类的继承 • final关键字 • 接口 • 异常 • 包的定义与使用
• 多态
目录
类的继承
让IT教学更简单,让IT学习更有效
Final关键字 抽象类和接口 多态 异常 包 访问控制
4.1 类的继承
• 4.1.1 继承的概念
让IT教学更简单,让IT学习更有效
3.6 static 关键字
• 3.6.2 静态方法
让IT教学更简单,让IT学习更有效
例程3-15的Person类中定义了静态方法sayHello(),在第8行代码处 通过“Person.sayHello()”的形式调用了静态方法,由此可见静态 方法不需要创建对象就可以调用。
3.6 static 关键字
类的成员变量、成员方法和构造方法。接下来分两种情况来学习
一下super关键字的具体用法。 – 1、使用super关键字调用父类的成员变量和成员方法。具体格式
如下:
4.1 类的继承
让IT教学更简单,让IT学习更有效
4.1 类的继承
• 4.1.1重写父类方法
让IT教学更简单,让IT学习更有效
– 2、使用super关键字调用父类的构造方法。具体格式如下:
4.2 final 关键字
让IT教学更简单,让IT学习更有效
java第4章PPT教学课件
应用软件开发的起点是用户的实际问题和需求,终 点是一个可较好解决用户的实际问题和满足用户原始 需求的应用软件。从起点到终点的整个开发过程,若采 用面向对象的方法,软件开发过程可以大体划分为以 上的三个阶段。当然这个过程并不是线形的,通常会包 括一些反馈和某些步骤的修改,呈现一种螺旋型上升的 曲线。
2020/12/12
2020/12/12
3
图示:类与对象的关系
2020/12/12
4
4.2 面向对象软件开发的基本过程
1、面向对象的软件开发过程 2、面向对象的分析阶段 3、面向对象的设计阶段 4、实现阶段
2020/12/12
5
1、面向对象的软件开发过程ቤተ መጻሕፍቲ ባይዱ
用面向对象的方法来解决实际问题,是一个比较复 杂的过程,它包括面向对象的分析(OOA)、面向对象的 设计(OOD)和面向对象的编程(OOP)。
这些需求进行分析和筛选,与用户协商,去掉用户的需求中 的不合理元素,形成一个合理的方案。
需求分析的过程是一个复杂、烦琐、甚至艰难的过程, 通常需要反复讨论、协商和修改,才能达成最后的一致。需 求分析非常重要,如果做的不好, 会形成隐患和障碍,影响
整个开发工作。需求分析最后应形成书面的需求陈述。
2020/12/12
2020/12/12
2
2、什么是类
在Java程序中,类是创建对象的模板,对象是类的实例, 任何一个对象都是隶属于某个类的。
类是同种对象的集合与抽象。分类所依据的原则是抽象, 即抽象出能反映与当前目标有关的本质特征,而忽略那些与当 前目标无关的非本质特征,从而找出事物的共性,把具有共同 性质的事物归结为一类,得出一个抽象的概念——类。
6
图示
2020/12/12
2020/12/12
2020/12/12
3
图示:类与对象的关系
2020/12/12
4
4.2 面向对象软件开发的基本过程
1、面向对象的软件开发过程 2、面向对象的分析阶段 3、面向对象的设计阶段 4、实现阶段
2020/12/12
5
1、面向对象的软件开发过程ቤተ መጻሕፍቲ ባይዱ
用面向对象的方法来解决实际问题,是一个比较复 杂的过程,它包括面向对象的分析(OOA)、面向对象的 设计(OOD)和面向对象的编程(OOP)。
这些需求进行分析和筛选,与用户协商,去掉用户的需求中 的不合理元素,形成一个合理的方案。
需求分析的过程是一个复杂、烦琐、甚至艰难的过程, 通常需要反复讨论、协商和修改,才能达成最后的一致。需 求分析非常重要,如果做的不好, 会形成隐患和障碍,影响
整个开发工作。需求分析最后应形成书面的需求陈述。
2020/12/12
2020/12/12
2
2、什么是类
在Java程序中,类是创建对象的模板,对象是类的实例, 任何一个对象都是隶属于某个类的。
类是同种对象的集合与抽象。分类所依据的原则是抽象, 即抽象出能反映与当前目标有关的本质特征,而忽略那些与当 前目标无关的非本质特征,从而找出事物的共性,把具有共同 性质的事物归结为一类,得出一个抽象的概念——类。
6
图示
2020/12/12
Java实用PPT课件第4章.ppt
2020/10/8
3
3.简单的Circle类
面向对象的一个重要思想就是通过抽象得到类,即将某些数据以及针对这些 数据上的操作封装在一个类中,也就是说,抽象的关键点有两点一是数据,二 是数据上的操作。
我们对所观察的圆做如下抽象:
☃圆具有半径之属性。
☃可以使用半径计算出圆的面积。
现在根据如上的抽象,编写出如下的Circle类。
Circle circle; 为Circle类声明的circle对象分配变量的代码如下:
circle = new Circle(); 对象通过使用“.”运算符操作自己的变量和调用方法。 对象操作自己的变量的的格式为:对象.变量;
例如,circle.radius=100; 调用方法的格式为: 对象.方法;
(1)封装:面向对象编程核心思想之一就是将数据和对数据的操作封装在 一起。通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如 类的概念。
人们经常谈到的机动车类就是从具体的实例中抽取共同的属性和功能形成 的一个概念,那么一个具体的轿车就是机动车类的一个实例,即对象。
一个对象将自己的数据和对这些数据的操作合理有效地封装在一起,例 如,每辆轿车调用“加速”、“减速”改变的都是自己的运行速度。
第4章 类与对象
本章导读
类声明和类体及其构成 构造方法与对象的创建 对象的引用与实体 成员变量、方法和方法重载 关键字this 包
本章导读 import语句 访问权限 对象的组合 基本类型数据的类包装 反编译和文档生成器 JAR文件的使用
2020/10/8
1
4.1 面向对象编程
1. 面向对象编程的三个特性
2020/10/8
2
2.提出一个简单的问题
《java程序设计》第4讲精品PPT课件
11.10.2020
11
(3)引用一维数组元素
下标
数组名
0 1 5 3 4 5 6 7 8 9 10 11 12 13 14
arrLeabharlann -28 -1 -3 16 20 25 16 16 8
1 8
19 45 21 -2
内容
• 数组的每个元素通过它在数组里的位置 来引用:数组名 [ 下标 ],例如:arr[7]
• 使用一个不在0到N-1范围内的下标值系统将 发生运行时异常,这是由于Java运行系统会 对数组下标自动进行范围越界检查。例如: arr[-1]、arr[15]
• 11.10.2020 例4.1
13
• 对数组的处理通常与循环语句结合在一起,实 现对数组元素依次作出某种处理。例如:
int myArray[ ] = new int[5]; for ( int index = 0; index < myArray.length;
11.10.2020
16
• 对于对象数组来说,Java只把对象的引用存储 在数组里,而不是存储整个对象。
cou1n5t = 0
• 当创建有N个元素的数组时,编译器为N个该 元素类型的变量分配空间;对于元素是引用类 型的数组,编译器将分配N个地址的空间。
例如:double arr[ ] = new double[20]; // 编译器将分配20*8个字节的存储空间 String strarr[ ] = new String[5]; // 编译器将分配5*4个字节的存储空间
strarr[k] = new String( );
strarr
strarr
strarr
11.10.2020
:vcaoSluutnre:vcitnaoS==lugut“nr0e:vc”itnaoS==lugut“nr0e:vc”itnaoS==lugut“nr0e:v”itnaS==lgut“r0e”in=g“”
java第四课.ppt
class方法的命名
方法的名字用一个小写字母开头,后面的单词用大写字母开头,例如:run(), getBalance()。
static final变量的命名 static final变量的名字所有字母都大写,并且能表示完整含义。例如:PI, PASSWORD。
参数的命名 参数的名字和变量的命名规范一致。
try/catch/finally语句。
异常处理
对于RuntimeException,通常不需要我们去捕获, 这类异常由Java运行系统自动抛出并自动处理。
如果父类中的方法抛出多个异常,则子类中的覆 盖方法要么抛出相同的异常,要么抛出异常的子 类,但不能抛出新的异常(注:构造方法除外)。
public void sit(){}; } class Sofa extends Chair implements Lie, HealthCare {
public void sleep(){}; public void massage(){}; }
内部类
在一个类中定义另外一个类,这个类就叫做内部类或 内置类 (inner class) 。
方法的说明符
方法的访问说明符
(1)public (2)protected (3)default(不加访问说明符时) (4)private 方法的其它修饰符
(1)static (2)final (3)abstract (4)native (5)synchronized
方法的访问控制
不同
访问说 明符
子类
通用性
private
方法的访问控制
不同
访问说 明符
情形下
同类
public
方法的名字用一个小写字母开头,后面的单词用大写字母开头,例如:run(), getBalance()。
static final变量的命名 static final变量的名字所有字母都大写,并且能表示完整含义。例如:PI, PASSWORD。
参数的命名 参数的名字和变量的命名规范一致。
try/catch/finally语句。
异常处理
对于RuntimeException,通常不需要我们去捕获, 这类异常由Java运行系统自动抛出并自动处理。
如果父类中的方法抛出多个异常,则子类中的覆 盖方法要么抛出相同的异常,要么抛出异常的子 类,但不能抛出新的异常(注:构造方法除外)。
public void sit(){}; } class Sofa extends Chair implements Lie, HealthCare {
public void sleep(){}; public void massage(){}; }
内部类
在一个类中定义另外一个类,这个类就叫做内部类或 内置类 (inner class) 。
方法的说明符
方法的访问说明符
(1)public (2)protected (3)default(不加访问说明符时) (4)private 方法的其它修饰符
(1)static (2)final (3)abstract (4)native (5)synchronized
方法的访问控制
不同
访问说 明符
子类
通用性
private
方法的访问控制
不同
访问说 明符
情形下
同类
public
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例外处理机制
6
例外的产生(续)
4
编程抛出例外:
– 在程序的相应部分抛出例外:
– throw new XXXException();
– throw new XXXException(String describe);
例:String readData() throws EOFException {……………….. throw new EOFException(“error”); ………………….}
4
例外处理机制
主要内容
4
引入例外机制 Java的例外处理
– 例外的抛出、捕获与处理
自定义例外 使用finally
2020/12/10
例外处理机制
2
对错误的处理
程序执行的错误 处理错误
– 向用户通知错误 – 保存全部工作 – 让用户适当地退出程序
例外处理
– JAVA检测和报告错误的机制
2020/12/10
} //end of class Inheriting
2020/12/10
2020/12/10
例外处理机制
7
例外的捕获和处理
4
警戒区:可能会引起例外的代码段
try{ 警戒区代码
}catch(ExceptType e){ 例外处理代码
//引起例外 //捕获例外 //处理例外
}
例外处理代码(Exception handlers)相当于 一类特殊的方法调用
2020/12/10
顺序: 先具体、后一般)
2020/12/10
例外处理机制
9
例外处理过程
4
当程序执行发生异常或遇到关键字 throw 时就抛出一个例外
将控制转移到相关的 catch 块中处理之
如果产生例外的方法本身没有相应catch 语句块,则应有throws语句声明例外
退出当前方法并转向上一级调用此方法 的方法的 catch 语句块
自动抛出例外
– 运行例外
程序运行中可自动由Java解释器引发并处理 的例外;编程时不需捕获或声明。
如:除0、下标越界、指针例外等
– 非运行例外
可在编译期由编译器确定某方法是否会发生 此类例外;必须编程时捕获或声明
如:IOException, InterruptedException
2020/12/10
e.getMessage());
System.out.println("e.toString(): " + e.toString());
System.out.println("e.printStackTrace():");
e.printStackTrace();
}
} //end of main()
} //end of class
public class Inheriting { public static void f( ) throws MyException { System.out.println("Throwing MyException from f()"); throw new MyException(); //抛出自定义例外 } ……… public static void main(String[] args) { try { f(); } //处理自定义例外 catch(MyException e) { e.printStackTrace(); } ……… } //end of main()
若始终没有catch块来处理则由运行系统
处理
2020/12/10
例外处理机制
10
Exception类的几个方法 4
String getMessage():返回详细信息
String toString():返回描述,包括详细信息
void printStackTrace(): 打印出例外发生的 路径,即引起例外的方法调用的序列
2020/12/10
须从Java已有定义的例外类继承,如 Exception、IOException等
可扩展构造函数、变量和方法
例:Inheriting.java
2020/12/10
例外处理机制
13
4 class MyException extends Exception { //自定义例外 public MyException() {} public MyException(String msg) { super(msg); } }
例外处理机制
8
多个例外的处理
4
可用一组并列的catch块处理多例外情况
try { . . . } catch( 例外类1 e1) { . . . } catch( 例外类2 e2) { . . . }
...
匹配规则:
– 抛出对象与catch参数类型相同
– 抛出对象为catch参数类的子类
– 按先后顺序捕获(注意catch块书写时的排列
方法均继承自Throwable类
例:ExceptionMethods.java
– 抛出->捕获->处理
– 例外的各方法
2020/12/10
例外处理机制
11
public class ExceptionMethods { public static void main(String[] args) {
例外处理机制
4
3
处理错误的方式
4
函数式编程中,直接检测调用函数返回 值以确定错误内容,存在问题
– 检测错误返回的编码工作量大,逻辑上复杂 – 返回的错误信息有限,无详细的位置性质等
例外处理
– throws,使不能正常结束的方法抛出一个封 装了错误信息的对象-例外
– 使用例外处理程序处理异常错误
2020/12/10
4
try { //抛出例外
throw new Exception("Here's my Exception");
} catch(Exception e) { //捕获例外 //处理例外
System.out.println("Caught Exception");
System.out.println("e.getMessage(): " +
例外处理机制
4
Java中的错误类型
4
Throwable
Error Exception
ArrayIndexOutOfBoundsException IOException
……...
可抛出类Throwable
错误类Error
例外/异常类Exception
2020/12/10
例外处理机制
5
例外的产生
4