第六章 内部类与异常类

合集下载

内部类实验报告

内部类实验报告

一、实验目的1. 理解内部类的概念及其在Java编程中的应用。

2. 掌握内部类的定义、使用方法和特点。

3. 通过实例分析,加深对内部类的理解。

二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. 编程语言:Java三、实验内容1. 内部类的定义及特点2. 成员内部类3. 静态内部类4. 局部内部类5. 匿名内部类四、实验步骤1. 创建一个名为“OuterClass”的类,作为外部类。

2. 在“OuterClass”中定义一个成员内部类“InnerClass”。

3. 在“OuterClass”中定义一个静态内部类“StaticInnerClass”。

4. 在“OuterClass”中定义一个局部内部类“LocalInnerClass”。

5. 创建一个匿名内部类的实例,并演示其使用。

五、实验代码```java// 1. 创建外部类OuterClasspublic class OuterClass {// 2. 成员内部类InnerClasspublic class InnerClass {public void display() {System.out.println("这是成员内部类InnerClass的方法");}}// 3. 静态内部类StaticInnerClasspublic static class StaticInnerClass {public void display() {System.out.println("这是静态内部类StaticInnerClass的方法");}}// 4. 局部内部类LocalInnerClasspublic void outerMethod() {class LocalInnerClass {public void display() {System.out.println("这是局部内部类LocalInnerClass的方法");}}LocalInnerClass localInner = new LocalInnerClass();localInner.display();}// 5. 匿名内部类public void anonymousInnerClass() {Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("这是匿名内部类的方法");}};new Thread(runnable).start();}public static void main(String[] args) {OuterClass outer = new OuterClass();OuterClass.InnerClass inner = outer.new InnerClass(); InnerClass.display();StaticInnerClass staticInner = new StaticInnerClass(); staticInner.display();outer.outerMethod();outer.anonymousInnerClass();}}```六、实验结果与分析1. 成员内部类:通过定义在类中的内部类,可以访问外部类的成员变量和方法。

Java程序设计课件:异常处理

Java程序设计课件:异常处理
一般不声明抛出超过3个的异常,如果发生这种情况,也要通过 代码重构或将多个异常映射到一个通用异常中来解决该问题, 或者在方法内部自行消化部分内部异常。
将异常组织成一个对象树结构,有利于保持方法定义的稳定性, 同时也给方法的使用者提供了以不同粒度处理异常的自由。
17/22 2023/12/28
7.3 自定义异常
Java程序设计
异常处理
本章主要内容
异常的概念 处理异常 自定义异常 小结
2023/12/28
2/22
异常的概念
凡是在运行时进入的不正常状态都称为错误。 这些错误根据错误的严重性可以分为两类:
一类是致命性的错误,它们的出现可能会导致系 统崩溃,并且程序员并不能编写程序解决所出现 的问题;
非法访问异常,如试图访问非公有方法。
实例化异常,如实例化抽象类。 中断异常。 输入输出异常。
找不到指定的字段异常。
找不到指定方法异常。
打印机错误报告异常。 运行时异常。 SQL语句执行错误异常。 线程阻塞超时异常。 执行转换算法异常。
2023/12/28
7/22
常见的RuntimeException类的子类
2. 抛出的异常对象如果属于 catch括号中要捕获的异常类 ,则catch会捕获此异常,且 为该异常创建一个引用名,然 后执行catch程序块中的异常 处理程序。其中“……”表示 多个catch程序块,每个catch 程序块捕获一种异常。
3. 无论try程序块是否捕获到 异常,或者捕获到的异常是否 与catch() 括号内的异常类型 相同,最后一定会运行finally 块里的程序代码。
} }
11/22 2023/12/28
异常捕获策略
尽可能只捕获指定的异常,而不是捕获多个异常的公共父 类,除非确信这个异常的所有子类对程序来说是没有差别 的,可以同样的方式来处理它们,同时也要考虑该异常将 来可能的扩展。只要有可能,就不要捕获 ng.Exception或ng.Throwable。

Java基础入门课后习题及答案

Java基础入门课后习题及答案

《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。

2、Java程序的运行环境简称之为JRE_____。

3、编译Java程序需要使用_javac_____命令。

4、和两个可执行程序存放在JDK安装目录的bin______目录下。

5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。

二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?BA.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d: \jre;三、问答题1、简述Java的特点。

面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、简述JRE与JDK的区别。

JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。

JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。

Java程序设计教程第6章6.2 类的方法

Java程序设计教程第6章6.2  类的方法

定义带参数的方法
public class ZhazhiJi {
public String zhazhi ( String fruit ) { String juice = fruit + "汁";
本章任务
4/61
会定义和使用类的无参方法 理解变量作用域 会添加JavaDoc注释 会定义带参方法 会使用带参方法 会创建包组织Java工程
本章目标
5/61
类的方法
按此按钮, 狮子开始跑
电动玩具狮子 属性:
颜色:黄色
问题
按此按钮, 狮子开始叫
行为: 跑 叫 抢球
写出狮子对象的“跑”方法、 “叫”方法、“抢 球”方法
public static void main(String[] args){

Student stu = new Student(); name = "神仙姐姐";
stu.sex
sex = 'F'; age = 18;
stu.age
stu.show();
}
}
3/61
实现计算平均分和课程总成绩 实现MyShopping系统菜单切换 实现MyShopping系统入口程序 实现客户信息的添加和显示 修改客户姓名 对客户姓名排序 实现模拟账户存取款功能
语法
对象名.方法名();
问题
小明过生日,爸爸送他一个电动狮子玩具,编程 测试这个狮子能否正常工作
10/61
方法调用
public class AutoLion {
String color = "黄色"; //颜色
/*跑*/ public void run(){

实验题目

实验题目

实验一 Java语言概述【实验目的】1.掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。

2.熟悉Java应用程序的基本结构,并能联合编译应用程序所需要的类。

文件保存要求:在D:盘新建文件夹“学号”,在“D:\ 学号”下新建文件夹“timu1”。

题目1的文件保存在“timu1”中,以下依次类推。

【题目1】1、实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

2、程序模板:请按模板要求,将【代码】替换为Java程序代码。

3、实验后的练习a.编译器怎样提示丢失大括号的错误。

b.编译器怎样提示语句丢失分号的错误。

c.编译器怎样提示将System写成system这一错误。

d.编译器怎样提示将String写成string这一错误。

【题目2】1、实验要求:编写3个源文件:、、,每个源文件只有一个类。

含有应用程序的主类(含有main方法),并使用了Teacher和Student类。

将3个源文件保存到同一目录,D:\timu2,然后编译。

2、程序模板:请按模板要求,将【代码】替换为Java程序代码。

3、实验后的练习a.将编译通过后,不断地修改源文件中的【代码2】。

比如,在命令行窗口输出“我是语文老师”或“我是数学老师”。

要求每次修改源文件后,单独编译,然后直接运行应用程序(不要再编译)。

b.如果需要编译某个目录下的全部Java源文件,如D:\1001目录,可以使用如下命令:D:\1001>javac *.java请练习上述命令。

【题目3】1、实验要求:课本第15页习题2、实验后的练习习题8.(4)实验四类与对象【实验目的】1.掌握使用类来封装对象的属性和行为。

2.掌握对象的组合以及参数传递。

3.掌握类变量与实例变量,以及类方法与实例方法的区别。

文件保存要求:在D:盘新建文件夹“shiyan04”,在“D:\ 20120shiyan04”下新建文件夹“timu1”。

Java程序设计精编教程5-8章知识点

Java程序设计精编教程5-8章知识点

b) 如果变量名由多个单词组成,从第 2 个单词开始的每个单词的首字母要大写。
方法
方法的定义包括两部分:方法声明和方法体。一般格式为:
方法声明部分 {
方法体的内容
}
方法声明
方法声明包括返回值类型、方法名和参数。
double getArea() { //返回值类型为 double,无参数。

}
方法的返回值类型可以是 Java 中的任意数据类型。如果一个方法不返回数据,返回值类型必须是 void。
2. 有一个类 Singleton,为该类设计单例模式(该类只能有一个实例,且不能在类的外部 new 对象),只能通过该类 的静态方法 getInstance()获取该类的唯一对象。在主类 Homework2 中测试单例模式的有效性。
b) 在实例方法中,不仅可以调用实例方法,也可以调用类方法。 2) 类名调用类方法
a) 在类方法中,只能调用类方法、操作类变量。 b) 也可以通过对象调用类方法。 c) 如果一个方法不需要操作实例变量就可以实现某种功能,可以考虑将其声明为类方法。(例 5-8) 5.7 方法重载与多态 Java 中有两种多态:重载(overload)和重写(override)。 方法重载(overload):一个类中可以有多个名字相同的方法,但这些方法的参数必须不同,或者参数的个数不同, 或者参数的类型不同。方法的返回值类型与重载无关。
5.8 this 关键字 this 只能出现在实例方法和构造方法(也属于实例方法)中,表示调用该方法的当前对象。 一般情况下,方法中 this.实例变量的 this 可省略、类名.类变量的类名可省略,但当局部变量与成员变量同名时,
this 或类名不能省略。 5.9 包
包是 Java 语言管理类的一种机制,类似于操作系统中的目录,使用包名可以有效区分名字相同的类。 包语句

Java中异常的概念和分类

Java中异常的概念和分类

Java中异常的概念和分类
异常就是程序在编译时发⽣的意想不到的情况,⼀般⽽⾔分为两类:错误(Error)和异常(Exception)
Error: 分为两种:
程序编写出现语法错误
Exception: 所有异常类的⽗类(我们说的异常处理⼀般就是处理与Exception类相关的异常,Exception和Error合起来被称作异常,但Exception⾃⾝也可以被称为异常,通常我们说的异常指的就是Exception及其⼦类
Exception异常分为编译时异常和运⾏时异常,由于我们⽆法预测程序⾥可能出现的错误或⽤户在使⽤程序时会出现的错误,所以需要异常类来告诉我们程序出现了异常,⽐如0不能作为除数,但⽤户硬是⽤做了除数怎么办?
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println(1/a);
}
Exception的⼦类被分为两⼤类:编译时异常,运⾏时异常
编译时异常: 在编写代码时如果有此类异常则必须被捕获(catch)或抛出(throw)
运⾏时异常: 可以不必再编写代码时捕获或抛出
说明: 所有异常都可以被捕获或抛出,如果异常最终没有被捕获⽽是被抛出的话程序会⽴即终⽌运⾏并打印异常信息,另外,如果不捕获运⾏时异常,默认会抛出运⾏时异常
编译时异常的特征: 直接继承⾃Exception类,不继承RuntimeException,必须被显式的捕获或抛出
运⾏时异常的特征: 继承⾃RuntimeException类,可以不被显式的捕获或抛出,如果不被显式的捕获则默认会被抛出。

Java程序设计基础教程

Java程序设计基础教程

04
9.4形状类
06
9.6 FXML 设计用户界 面
05
9.5事件处 理机制
9.8本章小结
9.7 JavaFX可视化 布局工具
9.9习题
1
10.1数据库概 述
2
10.2 SQL语言 基础
3
10.3 MySQL 数据库简介
4
10.4 Java数 据库编程
5
10.5数据库应 用综合实例
10.6本章小结
4.8 Lambda表达式
4.10习题
01
5.1异常概 述
02
5.2 Java 异常的捕获 和处理
04
5.4自定义 异常类
06
5.6习题
03
5.3 Java 异常的声明 和抛出
05
5.5本章小 结
6.1包装类
6.2 Math类与 Random类
6.3字符串类 6.4日期与时间类
1
6.5集合类
2
6.6泛型
3
6.7反射机制
4
6程简介
7.3线程同步
7.4本章小结
7.5习题
1
8.1输入输出 流概述
2
8.2文件类
3
8.3字节流
4
8.4字符流
5
8.5随机流
8.6本章小结
8.7习题
01
9.1 GUI简 介
02
9.2常用的 UI组件
03
9.3布局面 板
2.7本章小结 2.8习题
3.1类的定义
3.2对象的创建与使 用
3.3访问控制符
3.4 static关键字 的使用
3.5 this关键字的 使用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌套try-catch-finally语句
Java语言的try-catch-finally语句可以嵌套,即
在try块中可以包含另外的try-catch-finally语句。
【示例程序c11_3.java】 使用嵌套的try-catch-finally语句自行处理异常。
public class c11_3 { static int a,b,c; public static void main(String args[ ]) { try { a=10; b=0; try { c=a/b; System.out.println("a/b = " + c); } catch (IndexOutOfBoundsException E) { System.out.println("捕捉超出索引异常 ..."); } finally { System.out.println("嵌套内层的 finally区块 "); } } catch(ArithmeticException E) { System.out.println("捕捉数学运算异常: b="+b); } finally { System.out.println("嵌套外层的 finally区块 "); if(b == 0) System.out.println("程序执行发生异常 !"); else System.out.println("程序正常执行完毕 !"); } } }
例子
class China { final String nationalAnthem="义勇军进行曲"; Beijing beijing; China() { beijing=new Beijing(); } String getSong() { return nationalAnthem; } class Beijing //内部类 { String name="北京"; void speak() { System.out.println("我们是"+name+" 我们的国歌是:"+getSong()); } } } public class Example4_30 { public static void main(String args[]) { China china=new China(); china.beijing.speak(); } }
【示例程序c11_2.java】 使用try-catch-finally语句自行处理异常
public class c11_2 { public static void main(String args[ ]) { int a,b,c; a=67; b=0; try { int x[ ]=new int[-5]; c=a/b; System.out.println(a+"/"+b+"="+c); } catch(NegativeArraySizeException e) { System.out.println("exception: " + e.getMessage( )); e.printStackTrace( ); } catch(ArithmeticException e) { System.out.println("b=0: " + e.getMessage( )); } finally { System.out.println("end"); } } }


一个是Exception类,它包含了一般性的异常,如 I/O异常,SQL异常,这些异常是用户可以捕捉到 的异常,可以通过产生它的子类来创建自己的异 常处理。(try-catch语句) 一个是Error子类,它包含Java系统或执行环境中 发生的异常,这些异常是用户无法捕捉到的异常
ቤተ መጻሕፍቲ ባይዱ
6.3.1 try-catch语句
try-catch语句的说明
(1) try:将可能出现错误的程序代码放在try块中,对try 块中的程序代码进行检查,可能会抛出一个或多个异 常。因此,try后面可跟一个或多个catch。 (2) catch:其功能是捕获异常,参数ExceptionObject是 ExceptionType类的对象,这是由前面的try语句生成的。 ExceptionType是Throwable类中的子类,它指出catch 语句中所处理的异常类型。catch捕获异常的过程中, 要将Throwable类中的异常类型和try语句抛出的异常 类型进行比较,若相同,则在catch中进行处理。 (3) Finally:是这个组合语句的统一出口,一般用来进行 一些“善后”操作,例如释放资源、关闭文件等。它 是可选的部分。
6.3 异常类


所谓异常就是程序运行时可能出现的一些错误,比如说: ① 用户输入出错 ② 所需文件找不到 ③ 运行时磁盘空间不够 ④ 内存不够 ⑤ 算术运算错 (数的溢出,被零除…) ⑥ 数组下标越界 …… 当Java程序出现以上的错误时,就会在所处的方法中产生一个异 常对象。这个异常对象包括错误的类型,错误出现时程序的运行 状态以及对该错误的详细描述。并由系统中相应的机制来处理, 以确保不会产生死机、死循环或其他对操作系统有损害的结果, 从而保证了整个程序运行的安全性。
例子
class Cubic { double getCubic(int n) { return 0; } } abstract class Sqrt { public abstract double getSqrt(int x); } class A { void f(Cubic cubic) { double result=cubic.getCubic(3); // 执行匿名类体中重写的getCubic System.out.println(result); } } public class Example4_31 { public static void main(String args[]) { A a=new A(); a.f ( new Cubic() //使用匿名类创建对象,将该对象传递给方法f的参数cubic { double getCubic(int n) { return n*n*n; } } ); Sqrt ss=new Sqrt() { public double getSqrt(int x) { return Math.sqrt(x); } }; double m=ss.getSqrt(5); System.out.println(m); } }




匿名类可以继承父类的方法,也可以重写父类 的方法 匿名类一定是内部类,可以访问外嵌类中的成 员变量和方法 匿名类的类体中不能声明static成员变量和 static方法 匿名对象的引用必须传递给一个匹配的参数, 匿名类的主要用途就是向方法的参数传值



假设f(B x)是一个方法: void f(B x) { x调用B类中的方法 } 其中参数是B类对象,那么在调用方法f时可以向其参 数x传递一个匿名对象,例如 f ( new B() { 匿名类的类体 } ) 如果匿名类继承了父类的方法,x就调用继承的方法 如果匿名类重写了父类的方法,x就调用重写的方法
Exception类 Error类 Error子类
RuntimeException类 RuntimeException子类
CheckedException类 CheckedException子类
异常类的继承结构
异常类的继承关系

Java中所有的异常类都继承自 ng.Throwable类。Throwable类有两个 直接子类:
生异常,程序就会被终止并显示一些错误信息给用户; 二是使用Java语言提供的try-catch-finally语句自行处理异常。这
种方式的优点很多,其中最主要的优点是将处理异常的代码与程 序代码的主线分离开来,增强了程序的可读性;其次是可减少中 途终止程序运行的可能性。
异常类的继承关系
Object类 Throwable类
try-catch-finally结构
无异常
try 执行catch
有异常
执行finally
try-catch-finally结构
例子
public class Example4_33 { public static void main(String args[ ]) { int n=0,m=0,t=555; try{ m=Integer.parseInt("8888"); n=Integer.parseInt(“abc789”); t=9999; } catch(NumberFormatException e) { System.out.println("发生异常:"+e.getMessage()); e.printStackTrace(); n=123; } System.out.println("n="+n+",m="+m+",t="+t); } }
程序运行时期
是否自行处理异常
使用try-catch-finally语句自行 处理
由预设处理方法加以 处理
Java异常处理机制结构
Java异常处理机制
在Java程序中,当程序运行过程中发生异常时,可采用如图所示 的两种方式处理异常: 一是由Java异常处理机制的预设处理方法来处理,即一旦程序发
和接口有关的匿名类

如果某个方法的参数是接口类型,那么 可以使用接口名和类体组合创建一个匿 名对象传递给方法的参数,类体必须要 实现接口中的全部方法
相关文档
最新文档