《Java程序设计》第05章
Java程序设计第2版第五章
由于x[0]、x[1]和x[2]都是数组引用变量,
必须对它们赋值,指向真正的数组对象,才可以
引用这些数组中的元素。
x[0]=new int [3];
x[1]=new int[2];
由此可以看出,x[0]和x[1]的长度可以是不 一样的,数组对象中也可以只有一个元素。程序 运行到这之后的内存分配情况如图5.6所示。
9
数组声明之后,接下来便是要分配数组所需 的内存,这时必须用运算符new,其中“个数” 是告诉编译器,所声明的数组要存放多少个元素 ,所以“new”运算符是通知编译器根据括号里 的个数,在内存中分配一块空间供该数组使用。
10
下面举例来说明数组的定义,如: int[] x; x=new int[10]; 在声明数组时,也可以将两个语句合并成一行, 格式如下: 数据类型[] 数组名 = new 数据类型[个数]; 如: int[] x= new int [10];
12
【例5.1】声明一个一维数组,其长度为 5,利用循环对数组元素进行赋值,然后再利 用另一个循环逆序输出数组元素的内容。程
序代码如下:
13
//app5_1.java 一维数组 【例5.1】续 public class app5_1 { public static void main(String args[ ]) { int i; int a[]; //声明一个数组a a=new int[5]; //分配内存空间供整型数组a使用,其 元素个数为5 for(i=0;i<5;i++) //对数组元素进行赋值 a[i]=i; for(i=a.length-1;i>=0;i--) //逆序输出数组的内容 System.out.print(“a[”+i+”]=”+a[i]+”,\t”); System.out.println(“\n数组a的长度是:”+a.length); } } 14
《Java程序设计》第05章在线测试
《Java程序设计》第05章在线测试
A B
C D
A B
C D
A B
C D
A B
C D
A B
C D
D、Frame的默认布局管理器为BorderLayout
2、下列属于Swing构件的是()。
A、JMenu
B、JApplet
C、JOptionPane
D、Panel
3、下面哪些是Java中的容器()。
A、Frame
B、Panel
C、Scrollbar
D、Dialog
4、对JFrame添加构件有()方式。
A、用add方法直接加入到JFrame中。
B、建立一个Jpanel的中间容器,把构件添加到容器中,再把该容器置为JFrame的内容面板,再对其加入构
件。
C、建立一个JDesktopPane之类的中间容器,把构件添加到容器中,再把该容器置为JFrame的内容面板,再
对其加入构件。
D、用getContentPane()方法获得JFrame的内容面板,再对其加入构件。
5、在JAVA语言中,你的按钮要实现下面的功能:当鼠标按下按钮时,显示“鼠标已按下”;当释放按键时,显示“鼠标已释放”。
你必须具体定义接口MouseListener的()方法。
A、mouseClicked
B、mouseEntered
C、mousePressed
D、mouseReleaseed
第三题、判断题(每题1分,5道题共5分)
1、在Swing用户界面的程序设计中,容器不能被添加到其它容器中。
正确错误正确错误正确错误正确错误正确错误。
Java程序设计第五章
方法EmployeeAConsole下的add和modify。 5、调用,测试验证输入非法职称。
5.2.3 解决方案
5.2.4 知识总结
1.自定义异常类
为了创建和使用自定义的异常,就必须先定义一个异 常类。可以使用extends关键字定义一个异常类,自定 义异常类通常是从Exception类派生而成。其语法格式 为:
(2)声明抛出异常
• 声明抛出异常不是捕获异常,将可能出现的异常交给调用的方 法来处理。声明方法时用throws子句声明将可能抛出哪些异常 。格式如下:
返回值类型 方法名([参数]) throws 异常类型{ 方法体 }
5.1.5 应用实践
定义一个100个整数元素的数组,使用随机整数 初始化所有100个元素。提示用户输入数组下标 ,越c程界kn 序,1ckn1 (n显 则kk 示 使1) 对 用kk 应异10,2,3,元常,n 素类的的值输。出如信果息用来户提输示入用的户下,标但 程序继续运行。
任务5.2 自定义异常
1 情境描述
2
问题分析
3 解决方案
4ห้องสมุดไป่ตู้知识总结
5 应用实践
5.2.1 情境描述
职称的取值只有初级、中级、副高、正高和其他 几种取值,然而,目前A类员工的信息接收时, 可以接收任意的字符,为了控制有效的职称输入 ,他需要完成以下的任务:
1)自定义异常类 2)抛出异常操作 3)异常信息捕捉
5.1.4 知识总结
1. Java的异常
(1)基本概念 在Java程序中异常一般由两种原因引起。 一种是程序中存在非法操作。另一种是程序员在程序中
《Java程序设计》教材第五章练习题答案
习题一、选择题1. 面向对象程序设计的基本特征是(BCD)。
(多选)A.抽象B.封装C.继承D.多态2.下面关于类的说法正确的是(ACD)。
(多选)A.类是Java 语言中的一种复合数据类型。
B.类中包含数据变量和方法。
C.类是对所有具有一定共性的对象的抽象。
D.Java 语言的类只支持单继承。
上机指导1.设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。
要求是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\BankUser.java”2.设计银行项目中的帐户信息,包括帐户卡号、密码、存款,要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Account.java”3.设计银行项目中的管理员类,包括用户名和密码。
要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Manager.java”4.创建一个Rectangle类。
添加两个属性width、height,分别表示宽度和高度,添加计算矩形的周长和面积的方法。
测试输出一个矩形的周长和面积。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Rectangle.java”5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Guess.java”6.编写一个Java程序,模拟一个简单的计算器。
定义名为Computer的类,其中两个整型数据成员num1和num1,编写构造方法,赋予num1和num2初始值,再为该类定义加、减、乘、除等公有方法,分别对两个成员变量执行加减乘除的运算。
Java程序设计教程 第五章
5.2.3 按钮
2. Swing包中的按钮(JButton) Swing包中的按钮 JButton) 包中的按钮( 使用JButton可以生成包含文字或图形(或 使用JButton可以生成包含文字或图形(或 两者)的按钮,JButton继承自 两者)的按钮,JButton继承自 AbstractButoon,常用的构造方法如下: AbstractButoon,常用的构造方法如下: (1)JButton():生成一个JButton对象. JButton():生成一个JButton对象. (2)JButton(Icon icon):生成一个以图形表 icon):生成一个以图形表 示的JButton对象. 示的JButton对象. (3)JButton(String text):生成一个使用指定 text):生成一个使用指定 文本的JButton对象. 文本的JButton对象. (4)JButton(String text, Icon icon):生成一个 icon):生成一个 包含文字和图形的JButton对象. 包含文字和图形的JButton对象.
5.2.1 Component,Container和 Component,Container和 JComponent类 JComponent类
Component类是所有GUI组件(包括AWT组 Component类是所有GUI组件(包括AWT组 件和Swing组件)的祖先类,描述了GUI组 件和Swing组件)的祖先类,描述了GUI组 件对事件管理和布局管理的支持. Container类是Component类的子类,在 Container类是Component类的子类,在 AWT包中定义,是所有GUI容器(包括Swing AWT包中定义,是所有GUI容器(包括Swing 顶层容器)的祖先类,提供了添加和删除组 件的基本方法. JComponent类又是Container类的子类,在 JComponent类又是Container类的子类,在 Swing包中定义,是除顶层容器外的其他 Swing包中定义,是除顶层容器外的其他 Swing组件的父类. Swing组件的父类.
网络程序设计java第05章泛型和枚举
参数化测试
在单元测试中,可以使用泛型来 参数化测试用例,对不同的输入 类型进行测试。
枚举在常量定义和类型选择中的应用场景
常量定义
使用枚举可以定义一组有限的常量值, 每个常量值都有明确的含义和用途。
类型选择
通过枚举,可以在程序中选择一个固 定的数据类型,例如表示星期的枚举、 表示月份的枚举等。
状态管理
分隔。
枚举常量
每个枚举常量都是该枚举类型 的一个实例,可以使用默认构
造函数创建枚举常量对象。
枚举方法
可以在枚举类型中定义方法, 这些方法将应用于所有的枚举
常量。
枚举与继承
枚举继承ห้องสมุดไป่ตู้
枚举类型可以继承另一个枚举类型,继承的枚举常量将自动 包含在子类中。
覆盖方法
可以在子枚举类型中覆盖父类中的方法,并为其提供新的实 现。
Java集合框架中的类如`ArrayList`, `HashSet`等支持 泛型,可以创建特定类型的集合。
集合的元素类型限制
使用泛型可以限制集合中元素的类型,减少类型转换 和运行时异常。
泛型通配符
使用通配符`?`表示未知类型,例如`List<?>`表示任意 类型的列表。
泛型与继承
泛型继承
子类可以继承父类的泛型类型,例如`class SpecialBox<T> extends Box<T>`。
实现泛型接口时需要指定具体的类型参数,例如`class StringGenerator implements Generator<String>`。
03
泛型的类型参数
类型参数的命名规则
01
类型参数的名称必须以大写字母开头,遵循驼峰命名法。
Java语言程序设计第五章PPT教学课件
voidpf5u(b)l;icpuvobildicfv3o( i)d{f5}( ){
}
public vpoSuiydbslfti4ecm(c)l.ao{sus}t.Tpersitn{tln("我就对f5( )方法感兴趣!");
public} voidpfu5b(l)ic{st}atic void main(String[ ] args) {
作用二:继承时,可用来修饰父类方法,防止 子类同名方法发生重写。
public class Mammal {
public final void call( ) {
System.out.println("哺乳动物会叫。");
}
public class Cat extend Mammal {
}
public void call() { //编译时发生错误
}
Line l = new Line();
public class Line implemCiercnltescS=hanpeew{Circle();
6
6
接口
演示接口
当所有方法均为抽象的,即没有具体实现时, 可使用interface关键字定义为接口,它是某个 事物对外提供的一些功能的申明 。
接口中的方法均为抽象声明的,及没有具体实 现;接口中的属性均为静态常量。
使用implements关键字来实现接口,可以利用 接口实现多态。
7
7
接口
接口中的方法不能有任何方法体实现。
声明抽象类语法:
– abstract class{…… }
应用场合:父类中的某些抽象方法不包含任何 逻辑,子类可以通过方法重写的机制提供这种 抽象方法的实现细节。
面向对象程序设计-Java语言05
(2)如果实现某接口的类不是 abstract的抽象类,则在类的定义部 分必须实现接口的所有抽象方法, 即为所有抽象方法定义方法体,而 且方法头部分应该与接口中的定义 完全一致,即有完全相同的返回值 和参数列表。 (3)如果实现某接口的类是 abstract的抽象类,则它可以不实现 该接口所有的方法。
然而在解决实际问题的过程中, 在很多情冴下仅仅依靠单继承不 能将复杂的问题描述清楚。为了 Java程序的类间层次结构更加合 理,更符合实际问题的本质要求, Java语言提供接口来实现多重继 承机制。
1.声明接口,格式如下: [修饰符] interface接口名[extends 父接口名列表]{ 常量数据成员声明 抽象方法声明
(2)接口中定义的数据成员全是 public final static成员,即常量。 (3)接口中没有自身的构造方法, 所有成员方法都是public abstract方法, 即抽象方法。 (4)接口也具有继承性,可以通过 extends关键字声明该接口的父接口。
一个类要实现接口时,即一个类 要调用多个接口时,要注意以下 几点。: (1)在类中,用implements关键字 就可以调用接口。一个类可以调用 多个接口,这时,在implements后 用逗号隔开多个接口的名称。
2.super的使用场合。super表示 的是当前对象的直接父类对象, 是当前对象的直接父类对象的引 用。 super的使用方法有3种:
(1)用来访问直接父类隐藏的数据成 员,其使用形式如下: super.数据成员 (2)用来调用直接父类中被覆盖的成 员方法,其使用形式如下: super.成员方法(参数) (3)用来调用直接父类的构造方法, 其使用形式如下: super(参数)
父类与子类乊间的关系如图所示:
《Java程序设计案例教程》第05章
▪ 对象也称为类的实例
Java程序设计案例教程
幻灯片 4,共35页
4
5.1.2 面向对象的基本特征
❖ 1. 封装性Encapsulation
▪ 封装是把属性和方法包装起来 ▪ 对外隐蔽大部分实现细节,达到对数据访问权的合理控制 ▪ 使程序各部分联系最小,提高了程序的安全性,简化了程序的代码编写
❖ 修饰成员变量和成员方法
▪ 4种均可应用 ▪ 变量通常是private,通过setters()和getters()方法,实现更加细化的控制 ▪ 方法常用public和private两种
❖ 修饰类和接口
▪ 只有public和(default)可用
程序设计
第5章 类与对象
Java程序设计案例教程
目录
5.1 面向对象的基本概念 5.2 类的封装 5.3 成员访问权限 5.4 内部类
2 幻灯片 2,共35页
5.1 面向对象的基本概念
❖ 5.1.1 面向对象的术语 ❖ 1. 对象Object
▪ 对象就是物体,是一个一个的物体,例如学生、猫、自行车 ▪ 对象具有:
❖}
❖}
Java程序设计案例教程
幻灯片 17,共32页
17
5.2 类的封装
❖ (1)声明对象 ❖ 创建对象包括声明对象和实例化对象两个部分,声明对象的格式为:
▪ [变量修饰符] 类名 对象名;
❖ 例如:Circle c; ❖ (2)创建对象 ❖ 声明过的对象不能被引用,它的默认值是null(空),必须使用new关键字创
幻灯片 18,共35页
18
5.2 类的封装
❖ (3)对象的使用 ❖ 引用对象的属性
java面向对象程序设计第五章
《Java面向对象程序设计第五章:深入探讨面向对象编程》在 Java 编程语言中,面向对象程序设计是一种重要的编程范式,它将现实世界中的问题建模为对象,并通过定义对象之间的关系和交互来解决问题。
第五章是深入学习 Java 面向对象程序设计的重要阶段,本文将围绕第五章的内容展开深入探讨,帮助读者更好地理解面向对象编程的核心概念和技术。
1. 对象和类第五章主要介绍了对象和类的概念,对象是具体的实体,类则是对象的模板,定义了对象的属性和行为。
在 Java 中,类是面向对象程序设计的基本单元,通过定义类可以创建对象,并对对象进行操作。
对象和类是面向对象程序设计的核心,理解对象和类的概念对于掌握面向对象编程至关重要。
2. 继承和多态继承是面向对象程序设计中的重要特性,它允许一个类继承另一个类的属性和行为,并可以扩展和修改这些属性和行为。
多态则是面向对象编程的另一个重要概念,它允许不同的对象对同一消息做出不同的响应,提高了代码的灵活性和复用性。
第五章详细介绍了继承和多态的原理和用法,帮助读者更好地理解和应用这些特性。
3. 封装和抽象封装和抽象是面向对象程序设计的两大基本原则,它们分别强调了信息隐藏和接口分离的重要性。
封装通过将数据和行为封装在类的内部,隐藏了对象的实现细节,提高了代码的安全性和可维护性。
抽象则通过接口和抽象类,定义了对象的行为和属性,帮助程序员更好地理解和使用对象。
第五章对封装和抽象进行了详细讲解,读者可以从中学习到如何正确地应用封装和抽象。
面向对象程序设计是一种强大的编程范式,它提供了丰富的工具和技术来解决现实世界中的复杂问题。
第五章的内容涵盖了面向对象程序设计的核心概念和技术,如对象和类、继承和多态、封装和抽象等,对于理解和掌握面向对象编程至关重要。
通过深入学习第五章的内容,读者可以更好地应用面向对象程序设计的思想和技术,提高代码的质量和效率。
个人观点:面向对象程序设计是我认为最重要的编程范式之一,它提供了一种自然而直观的思考方式,帮助程序员更好地理解和解决问题。
java语言程序设计基础篇第十版第五章
java语言程序设计基础篇第十版第五章摘要:一、Java 语言程序设计基础篇第十版第五章概述二、Java 程序设计基本概念与技术三、面向对象程序设计四、Java 程序设计高级主题五、Java 语言程序设计基础篇第十版第五章知识点详解六、Java 语言程序设计基础篇第十版第五章课后答案与练习题正文:一、Java 语言程序设计基础篇第十版第五章概述本章节主要介绍了Java 语言程序设计的基础知识,包括基本程序设计、语言结构、面向对象程序设计、继承与多态等内容。
通过学习本章节,读者可以掌握Java 语言的基本语法和编程技巧,为后续的学习打下坚实的基础。
二、Java 程序设计基本概念与技术1.基本数据类型:Java 语言中常用的基本数据类型包括整型、浮点型、布尔型和字符型等。
2.控制结构:Java 语言中的控制结构包括条件语句(如if-else)、循环语句(如for、while 和do-while)以及分支语句(如switch)等。
3.函数与方法:Java 语言中的函数称为方法,它可以实现代码的封装和重用。
方法的调用方式包括直接调用、间接调用和链式调用等。
4.数组:Java 语言中的数组是一种用于存储多个相同类型数据的集合。
数组可以进行遍历、排序等操作。
5.面向对象程序设计:Java 语言是一种面向对象的编程语言,它支持类和对象的概念。
类是一种抽象的数据类型,包含属性和方法;对象是类的实例,通过创建对象,可以调用类中定义的方法来实现具体的功能。
三、面向对象程序设计1.类与对象:Java 语言中的面向对象程序设计主要通过类和对象来实现。
类是一种抽象的数据类型,包含属性和方法;对象是类的实例,通过创建对象,可以调用类中定义的方法来实现具体的功能。
2.继承与多态:继承是Java 语言中实现代码重用的一种方式,它允许一个类(子类)继承另一个类(父类)的属性和方法。
多态是Java 语言中实现面向对象程序设计的重要特性之一,它允许一个接口或抽象类有多种实现方式。
Java程序设计电子教案第五章vrj
描述的字符串。 [格式] public void print StackTrace(); [说明] 打印异常发生处堆栈跟踪信息,包括异常的类名、方
法名及所在程序的行数,没有返回值,实际上它的功能是完 成一个打印操作,在当前的标准输出(一般就是屏幕)上打 印输出当前异常对象的堆栈使用轨迹,也即程序先后调用执 行了哪些对象或类的那些方法,使得运算过程中产生了这个 异常对象。
上一页 下一页 返回
5.1 编程中的错误
排除了系统运行错误,程序可以顺利执行了,却仍然不能代 表它已经毫无问题了。因为程序中还有可能存在着逻辑运行 错误。逻辑运行错误是指程序不能实现编程人员的设计意图 和设计功能而产生的错误,例如排序时不能正确处理数组头 后的元素等。有些逻辑运算错误是由于算法考虑不周引起的, 也有些则来自编码过程中的疏忽。
5.2.1 异常处理机制概述
异常就是在程序的运行过程中所发生的异常事件(不正常现 象),它中断指令的正常执行。在Java程序的执行过程中, 如果出现了异常事件,就会生成一个异常对象,故又称为特 殊的运行错误对象。很多类型的错误也都会导致异常的产生, 如需要打开的文件不存在、内存不够、数据访问超界、严重 者导致硬盘崩溃等,都会影响程序的正常执行。
上一页 下一页 返回
5.2异常与异常类
2 errors 在Java程序的执行过程中,异常对象可能是由正在运行的方
法生成,也可能由Java虚拟机生成,其中包含一些信息指明 异常事件的类型以及当异常发生时程序的运行状态等。生成 的异常对象将传递给Java运行时系统,这一异常的产生和提 交过程称为抛出(throw)异常。 当Java运行时系统得到一个异常对象时,它将会寻找处理这 一异常的代码。寻找的过程从生成异常对象的代码块开始, 沿着方法的调用栈逐层回溯,直到找到一个方法能够处理这 种类型的异常为止。然后运行时系统把当前异常对象交给这 个方法进行处理。这一过成称为捕获(catch)异常。 如果Java运行时系统找不到可以捕获异常的方法,则运行时 系统将终止,相应的Java程序也将退出。例5-2中出现的即 为这种情况。
【Java】《Java程序设计基础教程》第五章学习
【Java】《Java程序设计基础教程》第五章学习5.1 抽象类Java语⾔中,⽗类的某些⽅法不包括任何逻辑,并且需要由⼦类重写。
在这种情况下,⽤abstract关键字来修饰⼀个类时,这个类叫做抽象类,⽤abstract关键字来修饰⼀个⽅法时,这个⽅法叫做抽象⽅法。
抽象⽅法只需声明,⽆需实现;抽象类不能被实例化,必须通过抽象类的⼦类来间接实现;抽象类不⼀定要包含抽象⽅法,若类中包含了抽象⽅法,则该类必须被定义为抽象类。
抽象类可以包含⾮抽象⽅法。
继承抽象类的类必须实现抽象类的抽象⽅法,否则,也必须定义成抽象类。
即使抽象类中⽆抽象⽅法,也需要被继承后才能创建其⼦类的实例。
5.2 接⼝接⼝是抽象类的⼀种,只包含常量和⽅法的定义,⽽没有变量和⽅法的实现,且其⽅法都是抽象⽅法。
它的⽤处体现在下⾯⼏个⽅⾯:1.接⼝的定义(1). 通过接⼝实现不相关类的相同⾏为,⽽⽆需考虑这些类之间的关系(2). 通过接⼝指明多个类需要实现的⽅法(3). 通过接⼝了解对象的交互界⾯,⽽⽆须了解对象所对应的类在声明接⼝的成员时不被允许使⽤⼀些声明修饰语,⽐如不能在接⼝的成员声明中使⽤transient、volatile 或者 synchronized。
同样,不能在声明接⼝成员的时候使⽤private和protected修饰语2.接⼝的实现在类的声明中⽤implements⼦句来表⽰⼀个类实现某个接⼝,在类体中可以使⽤接⼝中定义的常量,⽽且必须实现接⼝中定义的所有抽象⽅法。
⼀个类可以实现多个接⼝,在implements⼦句中⽤逗号分开。
3.接⼝与抽象类、类的区别(1). 接⼝中不能有⾮抽象类的⽅法,但抽象类中可以有(2). ⼀个类能实现多个接⼝,但只能有⼀个⽗类(3). 接⼝也可以继承,与类不同,接⼝可以继承多个接⼝(4). ⽆关的类也可以实现同⼀接⼝5.3 包包是⼀组相关的类和接⼝的集合。
包不仅使得类的组织和管理更容易,也消除了不同组的类中潜在的类名冲突。
解析JAVA程序设计第五章课后答案
第5章习题解答1.流的主要特征有哪些,用流来实现JAVA中的输入输出有什么优点?答: 一是单向性,即数据只能从数据源流向数据宿;二是顺序性,先从数据源流出的数据一定比后流出的数据先到达数据宿;三是数据流必须而且只能和一个数据源与一个数据宿相连。
优点是体现了面向对象程序设计的概念,通过流可以把对不同类型的输入/输出设备的操作统一为用流来实现。
2.对字节流和字符流进行读写操作的一般步骤是什么?答:声明流对象,创建流对象,通过流对象进行读(写)操作,关闭流对象。
3. 有哪些常用的字节流和字符流,他们的主要区别是什么?答: InputStream/OutputStrem:普通字节流,所有字节流的基类。
FileInputStream/ FileOutputStream:用于从文件中读写数据。
BufferedInputStream/ BufferedOutputStream:用于从缓冲区输入流中读写数据。
采用缓冲区流可减少实际上从外部输入设备上读写数据的次数,从而提高效率。
DataInputStream/ DataOutputStream:按读写数据对象的大小从字节流中读写数据,而不是象其它字节流那样以字节为基本单位。
PipedInputStream/ PipedOutputStream:管道输流用于从另一个线程中读写数据。
4.么是异常?说明Java中的异常处理机制?试述JAVA中异常的抛出和传递过程?答: 异常是程序设计语言提供的一种机制,它用于在程序运行中的非常规情况下,控制程序对非常规情况进合理的处理。
Java提供了try-catch-finally语句来对异常进行处理。
先按照正常顺序执行try子句中的语句,若在执行过程中出现异常,则try子句中还未被执行的语句将再也不会被执行。
而程序控制立即转移到catch子句,将发生的异常与catch子句中的异常进行匹配,若找到一个匹配,就执行该catch子句中的语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自定义异常之后,将其作为普通的异常对待即可
Java程序设计与实训
幻灯片 幻灯片 15,共 15,共 32页 37页
15
5.4 单元测试
测试的目的
提高软件代码的质量,提高软件的可靠性
最简单的测试
System.out.print()语句
复杂的测试
白盒测试 黑盒测试 集成测试等
因为除数为0,产生的异常名为算术异常ArithmeticException 其它常见的异常有
空指针异常NullPointerException • 空指针异常非常常见,一般是引用数据类型没有正确初始化或被赋 空值而引起的。 数组下标越界异常ArrayIndexOutOfBoundsException • 数组操作时可能出现 类型转换异常ClassCastException • 不正确的类型转换
Java程序设计与实训 幻灯片 幻灯片 10,共 10,共 32页 37页 10
声明抛出异常
声明抛出异常是不捕获异常,将可能出现的异常交给调用 的方法来处理。格式是:
[方法修饰符] 返回类型 方法名 ([参数列表]) [throws 异常列表]{ [方法体] }
例如:
难点
Java程序设计与实训
目录
5.1 异常概述 5.2 异常处理 5.3 自定义异常 5.4 单元测试
Java程序设计与实训
幻灯片 幻灯片 4,共 4,共 32页 37页
4
5.1 异常概述
异常是程序中的不正常情况
严重的——称为错误 • 无法处理 • 不需处理 • 程序将中止 一般的——称为异常 • 应该处理 • 否则程序中止
Java单元测试(JUnit)
为Java程序开发过程中实现单元测试提供的一种框架(工具)
JUnit框架的二个基本组成部分是:
Test Case(测试用例) • 为一个测试目标而编写的一组测试 Test Suite(测试用例集) • 针对一个功能的所有测试用例的集合
Java程序设计与实训
Java程序设计与实训 幻灯片 幻灯片 6,共 6,共 32页 37页 6
异常的分类
三大类
错误是不需处理,也无法处理的 运行时异常是可以处理,也可以不处理的 非运行时异常是必须处理的
出现异常而没有处理,程序将中止
Java程序设计与实训
幻灯片 幻灯片 7,共 7,共 32页 37页
Java程序设计与实训
幻灯片 幻灯片 8,共 8,共 32页 37页
8
捕获异常
捕获异常是通过try-catch-finally语句实现的:
try{ ...... }catch( ExceptionName1 e ){ ...... }catch( ExceptionName2 e ){ ...... }finally{ ...... }
Java程序设计与实训
幻灯片 幻灯片 5,共 5,共 32页 37页
5
常见的异常
下述代码将产生一个异常
public class ArithmeticExceptionDemo { public static void main(String[] args) { int a = 0; int b = 8 / a; // a 的值为0,被0除是无法计算的 } }
public int read() throws IOException{ // ... }
Java程序设计与实训
幻灯片 幻灯片 11,共 11,nt()方法不捕获异常,而是交给上一级处理
import java.util.*; public class ThrowsDemo { public static void main(String[] args) { int i = -1; try { i = readInt("输入一个整数然后按回车键:"); System.out.println(i); // 有异常时不输出i的值 } catch (InputMismatchException e) { // 异常由调用者处理 System.out.println("整数输入格式错."); } } public static int readInt(String prompt) throws InputMismatchException { // 声明抛出异常 Scanner sc = new Scanner(System.in); System.out.print(prompt); int i = sc.nextInt(); // 因此这里不需捕获异常 return i; } }
例如:
try { int a = 0; int b = 8 / a; } catch (ArithmeticException e) { System.out.println("出现算术异常, 异常信息是: " + e.getMessage()); }
Java程序设计与实训
幻灯片 幻灯片 9,共 9,共 32页 37页
单元测试是白盒测试的一种
Java程序设计与实训
幻灯片 幻灯片 16,共 16,共 32页 37页
16
5.4.1 JUnit介绍
单元(Unit)
是指一个可独立进行的工作,独立进行指的是这个工作不受前一 次或接下来的工作的结果影响 一个单元可以是一个方法,也可以是一组方法。
重点
异常的概念。 捕获异常。 声明抛出异常。 自定义异常。 单元测试的概念。 编写测试用例。 测试用例的执行和记录。 捕获异常。 声明抛出异常。 自定义异常。 编写测试用例。
幻灯片 幻灯片 3,共 3,共 32页 37页 3
在实际的软件设计中通常会创建一组自定义异常类,形成 一个有继承关系的层次结构。
Java程序设计与实训
幻灯片 幻灯片 13,共 13,共 32页 37页
13
5.3.2 抛出异常
自定义异常的使用是通过抛出(throw)异常实现的:
throw new MyException ("具体的异常信息。");
幻灯片 幻灯片 17,共 17,共 32页 37页
17
5.4.2 Test Case
单元测试的过程分为
设计测试用例 • 在设计阶段进行 编写测试用例代码 • 在代码编写阶段(之前或同时) 执行测试用例 • 代码开发过程中 • 代码修改后。 • 模块集成过程中。 • 项目完成前。 记录并撰写测试报告
Java程序设计与实训
幻灯片 幻灯片 20,共 20,共 32页 37页
7
5.2 异常处理
异常的产生
虚拟机生成 由某些类的实例生成 在程序中由throw语句生成
异常的处理
捕获异常——积极的异常处理机制 • 当产生异常时,JVM将异常对象交给一段称为捕获(catch) 异常的代码进行处理 声明抛出异常——消极的异常处理机制 • 如果一个方法不知道应该如何处理所出现的异常,则可在方法 定义时,声明抛出(throws)异常
然后在代码的其它部分捕获异常和声明抛出异常 目的是将异常通过方法调用链将异常传递到能够处理异常 的一级
Java程序设计与实训
幻灯片 幻灯片 14,共 14,共 32页 37页
14
5.3.3 自定义异常类的使用
自定义异常类的使用分三个步骤:
①设计并声明自定义异常类。 ②在出现异常处抛出异常,该方法还要声明抛出异常。 ③在处理异常处捕获并处理异常,或再次声明抛出异常。
9
实例
捕获三种异常:算术异常、下标越界异常和普通异常
public class CatchExceptionDemo { public static void main(String[] args) { int[] a = { 2, 1, 0 }; try { for (int i = 0; i <= a.length; i++) { System.out.println(1 / a[i]); } } catch (ArithmeticException e) { // 分别捕获多种异常 System.out.println("被0除"); return; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("下标越界: " + e.getMessage()); return; } catch (Exception e) { System.out.println("其它异常." + e.getMessage()); return; } finally { // 不论出现异常与否,这部分总会执行 System.out.println("善后处理."); } System.out.println("程序正常结束."); } }
Java程序设计与实训 幻灯片 幻灯片 12,共 12,共 32页 37页 12
5.3 自定义异常
5.3.1 自定义异常类
是Throwable类的直接或间接子类。 通常是声明为Ecxeption类的子类:
例如
public class MyException extends Exception{ public MyException(String message){ super(message); } }
程序设计
第5章 异常处理与单元测试
学习目标
理解异常的概念。 掌握异常处理的方法。 理解和掌握自定义异常。 理解单元测试与软件质量的关系。 掌握单元测试。 会写单元测试用例。