《Java程序设计》第05章

合集下载

Java程序设计第2版第五章

Java程序设计第2版第五章
26
由于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章在线测试

《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程序设计第五章

Java程序设计第五章
常抛出处理。 4、在调用EmployeeA的方法中进行异常处理,当前访问
方法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程序设计》教材第五章练习题答案

《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程序设计教程 第五章

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第05章泛型和枚举

参数化测试
在单元测试中,可以使用泛型来 参数化测试用例,对不同的输入 类型进行测试。
枚举在常量定义和类型选择中的应用场景
常量定义
使用枚举可以定义一组有限的常量值, 每个常量值都有明确的含义和用途。
类型选择
通过枚举,可以在程序中选择一个固 定的数据类型,例如表示星期的枚举、 表示月份的枚举等。
状态管理
分隔。
枚举常量
每个枚举常量都是该枚举类型 的一个实例,可以使用默认构
造函数创建枚举常量对象。
枚举方法
可以在枚举类型中定义方法, 这些方法将应用于所有的枚举
常量。
枚举与继承
枚举继承ห้องสมุดไป่ตู้
枚举类型可以继承另一个枚举类型,继承的枚举常量将自动 包含在子类中。
覆盖方法
可以在子枚举类型中覆盖父类中的方法,并为其提供新的实 现。
Java集合框架中的类如`ArrayList`, `HashSet`等支持 泛型,可以创建特定类型的集合。
集合的元素类型限制
使用泛型可以限制集合中元素的类型,减少类型转换 和运行时异常。
泛型通配符
使用通配符`?`表示未知类型,例如`List<?>`表示任意 类型的列表。
泛型与继承
泛型继承
子类可以继承父类的泛型类型,例如`class SpecialBox<T> extends Box<T>`。
实现泛型接口时需要指定具体的类型参数,例如`class StringGenerator implements Generator<String>`。
03
泛型的类型参数
类型参数的命名规则
01
类型参数的名称必须以大写字母开头,遵循驼峰命名法。

Java语言程序设计第五章PPT教学课件

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

面向对象程序设计-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(参数)
父类与子类乊间的关系如图所示:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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章 异常处理与单元测试
学习目标
理解异常的概念。 掌握异常处理的方法。 理解和掌握自定义异常。 理解单元测试与软件质量的关系。 掌握单元测试。 会写单元测试用例。
相关文档
最新文档