Corejava上机实验.docx

上传人:牧羊曲112 文档编号:3154789 上传时间:2023-03-11 格式:DOCX 页数:44 大小:58.98KB
返回 下载 相关 举报
Corejava上机实验.docx_第1页
第1页 / 共44页
Corejava上机实验.docx_第2页
第2页 / 共44页
Corejava上机实验.docx_第3页
第3页 / 共44页
Corejava上机实验.docx_第4页
第4页 / 共44页
Corejava上机实验.docx_第5页
第5页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Corejava上机实验.docx》由会员分享,可在线阅读,更多相关《Corejava上机实验.docx(44页珍藏版)》请在三一办公上搜索。

1、Corejava上机实验第一章:开始 一)基础实验: 1. 在Linux下安装JDK,配置环境变量 安装JDK: sudo chmod 777 /opt cp jdk-6u24-linux-i586.bin /opt cd /opt chmod a+x jdk-6u24-linux-i586.bin ./jdk-6u24-linux-i586.bin 配置环境变量: cp /.bahsrc /.bashrc.bak vi /.bashrc G=到文件结尾 o=下一行输入 JAVA_HOME=/opt/jdk1.6.0_24 PATH=JAVA_HOME$/bin:$PATH CLASSPATH

2、=. export JAVA_HOME PATH CLASSPATH :wq . /.bashrc javac echo $JAVA_HOME 2. 编辑、编译、运行一个带有包名的Hello.java,输出Hello World! vi Hello.java javac d bin src/Hello.java java cp bin com.briup.chap01.Hello 3. 编辑、编译、运行一个带有包名的MymathTest.java,完成整数的加减运算 vi MymathTest.java javac d bin src/ MymathTest.java java cp bin

3、com.briup.chap01. MymathTest 二)扩展实验: 1. JVM组成 类装载器:将java字节码加载到内存 运行时数据区: 方法区:类型信息 堆区:对象 栈区:保存方法调用状态,如局部变量、参数、返回值 PC寄存器:指向下一条将要执行的指令 本地方法栈:保存本地方法调用状态 执行引擎:运行类方法中的指令 三)作业: 1. 什么是JDK,其包括哪些内容 Java Development Kit(Java开发工具包),JDK主要包括内容: a. Java虚拟机:负责解析和执行Java程序,Java虚拟机可运行在各种平台上; b. JDK类库:提供最基础的Java类及各种实用类

4、,java.lang、java.io、java.util,、javax.swing、java.sql等包中的类都位于JDK类库中。 c. 开发工具:这些开发工具都是可执行程序,主要包括: javac编译工具; java运行工具; javadoc生成JavaDoc文档的工具 jar打包工具 2. 和java相关的环境变量有那几个,它们有什么作用 JAVA_HOME:简化其它变量设置过程中的内容输入。可先行将JDK的安装路径定义为一变量,以后凡使用到JDK安装路径的地方均使用该变量进行替换。 PATH:指定执行外部命令时找寻对应可执行文件的路径范围。 CLASSPATH:代表Java类的根路径,j

5、ava命令会从CLASSPATH中寻找所需的Java类;Java编译器编译Java类时,也会从CLASSPATH中寻找所需的Java类;classpath的默认值为当前路径。 3. java的优秀特性 跨平台:字节码跨平台,在任何平台上字节码都一样,但不同平台有不同平台的JVM 易编程:没有指针、面向对象 代码安全:有字节码校验器,适合在网络传输 4. 字节码校验器验证哪些内容 代码和jvm规范一致 代码不能破坏系统的完整性 没有堆栈的上溢和下溢 参数类型是正确的 类型转换是正确的 5. java程序编辑、编译、运行过程 vi xxx.javajavac xxx.javajava xxx 6.

6、 java中包的作用 将有关联关系的类组织在一起,便于管理;解决命名冲突问题 7. 什么是API,如何查看API Application Programming Interface 先查看packageclass/interfacefield/constructor/method 8. 修正Test1.java、Test2.java、Test3.java、Test4.java四个java源文件中的错误,使其能够编译和运行 第二章:标识符、关键字、类型 1) 基础实验: 1. 单行、多行注释例子 example/chap02/src/CommentTest.java 2. 写一java程序添加文

7、档注释,通过javadoc产生API文档 example/chap02/src/CommentTest2.java javadoc -d ./doc -author -version src/CommentTest2.java 3. 数据类型测试例子 example/chap02/src/TypeTest.java 4. 类、对象测试例子 example/chap02/src/Teacher.java example/chap02/src/TeacherTest.java 二)扩展实验: 1. 找零问题:有2元,买东西花了1.1元,问找零多少? System.out.println(2.00-

8、1.10); 注意:在需要精确答案的地方,要避免使用float或double;对于货币计算,要使用int、long或BigDecimal 2. 长整除问题: long micros_per_day = 24 * 60 * 60 * 1000 * 1000; long millis_per_day = 24 * 60 * 60 * 1000; System.out.println(micros_per_day / millis_per_day); 输出结果。 注意:当你操作很大的数字时,一定要提防溢出;较大整数运算可使用BigInteger 3. 初级问题 System.out.println(

9、12345 + 5432l)输出结果。 注意:做题要细心;在long类型字面常量中,一定要用大写的L 三)作业: 1. java中注释的分类 java中注释分三类 /:单行注释,如描述一个变量的作用 /* */:多行注释,如描述类的作用、方法的作用、复杂算法的描述 /* */:文档注释,需产生API文档时使用 2. java中标示符的命名规则 1) 以字母、_和$开头,不能以数字开头,后跟字母、数字、“_”和“$”的组合 2) 大小写敏感 3) 没有长度限制 4) 不能使用关键字 3. java中有哪些常用的基本数据类型 boolean、整型族、浮点型、字符型 4. 类和对象的概念 类是现实世

10、界中,具有相同属性和行为的事物的抽象。 对象是类的具体化。 5. 基本数据类型和引用类型的区别 1) 基本类型代表简单的数据类型,比如整数和字符。 引用类型代表复杂数据类型,引用类型所引用的实例包括操纵这种数据类型的行为。通过.运算符,就能访问引用变量所引用的实例的方法. 2) 基本类型Java虚拟机会为其分配数据类型实际占用的内存空间; 引用类型仅是一个指向堆区中某个实例的指针。 例:public class Counter int count = 13; Counter counter = new Counter; counter引用变量- Counter实例 count变量(占4个字节,

11、值为13) counter引用变量的取值为Counter实例的内存地址。 counter引用变量本身也占一定的内存空间,到底占用多少内存空间取决于Java虚拟机的实现,这对Java程序是透明的。 注:counter引用变量到底位于Java虚拟机的运行时数据区的哪个区?取决于counter变量的作用域,如果是局部变量,则位于Java栈区;静态成员变量,则位于方法区;实例成员变量,则位于堆区; 6. 编程 1)模仿Teacher类创建Student类 要求:Student类要描述姓名、性别、年龄 2)模仿TeacherTest类创建StudentTest类 要求: a) 在StudentTest类

12、中创建Student的对象 b) 为该对象的属性赋值 c) 将该对象的属性输出 7. 编程 1)为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000 2)修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出 8. 编程 已知类MyPoint表示一个二维的点,其定义如下: public class MyPoint public int x; public int y; public String toString return ( + x + , + y + ); 使用上面已提供的MyPoint类,建立一个TestMyPoint程序,该程序执行下列

13、操作: 1)定义两个类型为MyPoint的变量,变量名为:start 和 end。每个变量赋值一个新的MyPoint的对象。 2)将start 的 x 和 y 值设置为10,end的 x值设置为20,y值为30。 3)打印输出这两点变量,使用类似于如下的代码:System.out.println(“Start point is ”+start); 4)编译运行TestMyPoint。 5)声明一个类型为MyPoint的新变量,名为stray 将现有变量end 的引用值赋值给stray。 6)打印输出stray 和 end 。 7)将新值赋值给stray 变量的 x 和 y成员。打印输出stra

14、y end start。 8)编译运行TestMyPoint。end报告的值反映了stray中的变化,说明这两个变量引用的似同一个MyPoint对象。但是,start并没有改变,说明start与另两个变量无关。 输出结果应与下面类似: Start point is End point is Stray point is End point is Stray point is End point is Start point is 第三章:表达式和流程控制 一)基础实验: 1. 局部变量和实例变量测试例子 example/chap03/src/VariableTest.java 2. 操作符测试

15、例子 example/chap03/src/OperatorTest.java example/chap03/src/BitTest.java位运算 3. if语句测试例子 example/chap03/src/IfTest1.java example/chap03/src/IfTest2.java判断闰年 4. switch语句测试例子 example/chap03/src/SwitchTest.java example/chap03/src/Days.java某一年月有多少天 5. for、while、do while循环语句测试例子 example/chap03/src/LoopTest

16、.java三种循环实训1累加到100 example/chap03/src/LoopRandom.java产生10个200,500间的随机数 example/chap03/src/GcdLcm.java求两个数的最大公约数和最小公倍数 6. break、continue关键字测试例子 example/chap03/src/BreakContinueTest.java 2) 扩展实验: 1. 复合赋值 short x = 0; int i = 123456; x += i;/编译通过,x = -7616 x = x + i;/编译错误 注意:复合赋值表达式自动地将所执行计算的结果转型为其左侧变量

17、的类型 2. 判断奇数 public boolean isOdd(int i) return i % 2 = 1; /return i % 2 != 0; 注意:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号 3. 逻辑操作符&和位运算符&区别 注意:&是位运算符,可以进行逻辑运算,但不会逻辑短路 4. 条件运算符 int a = 20; int b = 10; char c = x; int i = 0; System.out.println(a b ? c : 0); System.out.println(a b ? i : c); 注意:除非彻底理解表达式行为的复杂规范,

18、通常最好在条件表达式中使用类型相同的第二和第三操作数 5. 类型转换 System.out.println(int)(char)(byte) - 1); 注意:计算机中,数都以补码的形式存放,正数的补码是其本身,负数的补码是其绝对值取反加1; 如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码; 如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1. 类型转换时,如果最初的数值类型是有符号的,那么就执行符号扩展;如果它是char,那么不管将要被转换成什么类型,都执行零扩展 三)作业: 1. 编程 exercise/chap03

19、第四章:数组 一)基础实验: 1. 数组基础测试例子 example/chap04/src/ArrayTest.java example/chap04/src/ArrayTest2.java 2. 求一组数的平均值 example/chap04/src/ArrayAvgTest.java 3. 求一组数的最大值 example/chap04/src/ArrayMaxTest.java 4. 冒泡排序 example/chap04/src/ArraySortTest.java 5. java辅助类java.util.Arrays辅助类的sort(int n)以及binarySearch(int

20、n,int key) example/chap04/src/ArraySortTest2.java 6. 随机抽取中奖手机号码 example/chap04/src/RandomTelphone.java 7. 产生4位验证码 example/chap04/src/ValidateCode.java 8. 多维数组测试例子 example/chap04/src/MultiArray.java 9. 填充二维方阵 example/chap04/src/Martrix.java 10. 数组拷贝 example/chap04/src/ArrayCopy.java 二)扩展实验: 1. 产生100个

21、1,6的整数,并统计每个整数出现的频率 example/chap04/src/Frequency.java 三)作业: 1. 编程 exercise/chap04 第五章:面向对象编程 1) 基础实验: 1) java的三大特性是哪些?每个特性的具体含义是什么? 2) 范围修饰符有几种?分别代表什么范围? 3) 什么是构造器? a) 构造器就是和类名相同但无返回类型的方法 4) 重写和重载的区别? a) 重写是子类的方法覆盖父类的方法,要求方法名和参数都相同 b) 重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数

22、5) 类的创建和初始化 i.example/chap05/Employee.java ii.example/chap05/EmployeeTest.java 6) 参数传递 i. example/ch05/ParamterTest.java ii. example/chap05/Student.java 7) this关键字的使用 a) example/ch05/Student.java b) example/ch05/StudentTest.java 8) 类的创建顺序 a) example/ch05/ObjectInit.java 9) 重载的构建 a) example/ch05/Over

23、loadTest.java 10) 继承的使用 a) example/ch05/Person.java b) example/ch05/Employee.java c) example/ch05/EmployeeTest.java 11) 说明super关键字的使用情况 a) 可以调用父类的属性和方法 b) 可以区分子类和父类的属性和方法 c) 调用父类构造器 12) 多态的练习 a) example/ch05/Shape.java b) example/ch05/ShapeTest.java 2) 扩展实验: a) 参考值传递和引用传递的不同方式来分析书上ParamterTest.java程

24、序 i. 前两个输出i值都为2 基本类型参数值传递的过程是参数拷贝过程 ii. 第三个输出是”zhao”,”male”,20,第四个输出是”larry”,”male”,20 引用类型参数值传递的过程是堆区地址传递的过程 iii. 最后两个输出都是”zhao”,”male”,20.最后一个的参数又重新开辟的 一段内存,与原来的不是同一个地址,所以互不影响. b) 通过实例说明一下重载的二义性,提出解决办法 i. 处理结果存在不确定性 eg:add(int a,float b) add(float a,int b) add(10,10) ii. 强制类型转换或者精确对应参数 c) 什么时候使用in

25、stanceof关键字 i. 当一个变量没办法说明在哪一个类域时,通过使用instanceof关键字可以进行判断 ii. if(kevin instanceof Manager) Manager manager = (Manager)kevin; . 三)作业: 1.编程 exercise/chap05 第六章:高级语言特性 1) 基础实验: 1).static变量和实例变量的区别? a) static变量对于每个类而言在内存中只有一个,能被类的所有实例所共享;实例变量对于每个类的每个实例都有一份,它们之间互不影响; b) Java虚拟机在加载类的过程中为static变量分配内存,实例变量在加

26、载完类后创建对象时分配内存; c) static变量存在方法区,实例变量存在堆区; d) static变量可以直接通过类名访问,实例变量通过引用类型变量访问; 2) 分析Count.java代码,说明里面所对应的值. a) 第一次count值为1 serialName值为1 b) 第二次count值为2,serialName值为2 3) Static的使用 a) example/ch06/DogTest.java 4) 利用static实现单例模式 example/ch06/SingletonTest.java 4) Final修饰符的作用? a) Final修饰的变量是不能被更改 b) Fi

27、nal修饰的class不能被继承 c) Final修饰的方法不能被重写 5) Final的使用 a) examle/ch06/FinalTest.java 6) abstract修饰符的作用? a) 可用来修饰类和成员方法。 i. 用abstract修饰的类表示抽象类,抽象类不能实例化,即不允许创建抽象类本身的实例。没有用abstract修饰的类称为具 体类,具体类可以被实例化。 ii. 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。 iii. 没有abstract修饰的方法称为具体方法,具体方法具有方法体。 b) 语法规则

28、; 1) 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类; 2) 没有抽象构造方法,也没有抽象静态方法; 3) 抽象类中可以有非抽象的构造方法; 4) 抽象类及抽象方法不能被final修饰符修饰。 7) abstract的使用 example/ch06/AnimalTest.java 8) 描述接口 a) 一个类只能继承一个直接的父类,但能实现多个接口 b) 接口是抽象类的抽象,抽象类可存在有方法体的方法,接口中的方法全部为抽象方法 c) 接口中的所有方法均是抽象方法, 默认都是public、abstract类型的 d) 接口中的成员变量默认都是public, static,

29、 final类型,必须被显式初始化 e) 接口中没有构造方法,不能被实例化 9) 接口的使用 a) example/ch06/Runner.java b) example/ch06/PersonTest.java c) example/ch06/Test.java d) example/ch06/CatTest.java e) example/ch06/DriverTest.java 10) 内部类的使用 a) 静态内部类: i. 静态内部类的实例不会自动持有外部类的特定实例的引用,在创建内部类的实例时,不必创建外部类的实例 ii. 静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例

30、成员,就必须通过外部类的实例去访问。 iii. 在静态内部类中可以定义静态成员和实例成员 iv. 可以通过完整的类名直接访问静态内部类的静态成员 b) 实例内部类: i. 在创建实例内部类的实例时,外部类的实例必须已经存在 ii. 实例内部类的实例自动持有外部类的实例的引用。在内部类中, 可以直接访问外部类的所有成员,包括 成员变量和成员方法 iii. 外部类实例与内部类实例之间是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例 对应零个或多个内部类实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问。 iv. 实例内部类中不能定义静态成员,而只能定义实例成

31、员 v. 如果实例内部类B与外部类A包含同名的成员,那么在类B中, this.v表示类B的成员, A.this.v表示类A的成员。 vi. 局部内部类和实例内部类一样,可以访问外部类的所有成员,此外,局部内部类还可以访问所在方法中的final类型 的参数和变量 c) 局部内部类; i. 在一个方法中定义的内部类,它的可见范围是当前方法。和局部变量一样,局部内部类不能用访问控制修饰符 (public, private和protected)及static修饰符来修饰 ii. 局部内部类和实例内部类一样,不能包含静态成员 11) 内部类的使用 a) 实例内部类: example/ch06/Insta

32、nceInnerClass.java b) 静态内部类: example/ch06/StaticInnerClass.java c) 局部内部类 example/ch06/LocalInnerClass.java d) 匿名内部类 example/ch06/AnonymousInnerClass.java e) 内部类 example/ch06/ RobotTest.java 12) 封装类的作用 1) 用引用类型表示数值;例如表示一个缺考学生的成绩; 2) 有些场合必须要引用类型;例如集合中只能存储引用类型; 3) 实现基本类型间以及与字符串间转换; example/ch06/Integer

33、Test.java 13) 集合 a) Collection和Iterator接口 1).在Collection接口中声明了适用于Set和List的通用方法: boolean add(Object o): 向集合中加入一个对象的引用; void clear: 删除集合中的所有对象引用,即不再持有这些 对象的引用; boolean contains(Object o): 判断在集合中是否持有特定对象的引用; boolean isEmpty: 判断集合是否为空; Iterator iterator: 返回一个Iterator对象,可用它来遍历集合中的元素; boolean remove(Objec

34、t o): 从集合中删除一个对象的引用; int size: 返回集合中元素的数目; Object toAttray: 返回一个数组,该数组包含集合中的所有元素; 2) Iterator接口隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一方法。Iterator接口中声明方法: hasNext: 判断集合中的元素是否遍历完毕,如没有,就返回true; next: 返回下一个元素; remove: 从集合中删除上一个由next方法返回的元素; b) List接口及其实现类的使用 主要特征是其元素以线性方式存储,集合中允许存放重复对象。 主要实现类包括: 1)ArrayList: 代

35、表长度可变的数组。允许对元素进行快速的 随机访问,但是向ArrayList中插入与删除元素的速度较慢; 2)LinkedList: 在实现中采用链表结构。对顺序访问进行了优化,向List中插入和删除元素的速度较快,随机访问速度则相对较慢。随机访问是指检索位于特定索引位置的元素。 3)Vector类:与ArrayList一样也实现了List接口,表示一个可变的对象数组; 与ArrayList的差别:Vector是同步的,占用的资源多一些,运行效率要低一些,主要用在多线程环境下,ArrayList是不同步的,适合在单线程环境下使用 4)使用: example/ch06/ArrayListTest.

36、java c) Set接口及其实现类的使用 Set集合中存放的是对象的引用,并且没有重复对象。 主要实现类包括: 1)HashSet: 按照哈希算法来存取集合中的对象,存取速度比较快; 2)LinkedHashSet: HashSet子类,不仅实现Hash算法,还实现链表数据结构,链表数据结构能提高插入和删除元素的性能; 3)TreeSet: 实现SortedSet接口,具有排序功能; 4)使用: example/ch06/HashSetTest.java example/ch06/Student.java example/ch06/HashSetTest2.java example/ch06

37、/TreeSetTest.java example/ch06/TreeSetTest1.java d)Map接口及其实现类的使用 Map是一种把键对象和值对象进行映射的集合,它的每一个元素都包含一对键对象和值对象。向Map集合中加入元素时,必须提供一对键对象和值对象,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。 主要实现类包括: 1)HashMap 按哈希算法来存取键对象,有很好的存取性能,为了保证HashMap能正常工作,和HashSet一样,要求当两个键对象 通过equals方法比较为true时,这两个键对象的hashCode方法返回的哈希码也一样。 2)TreeMap

38、 实现了SortedMap接口,能对键对象进行排序。和TreeSet 一样,TreeMap也支持自然排序和客户化排序两种方式。 3)使用 example/ch06/HashMapTest.java 14) 反射 a)一个对象或者类获得自身的Class对象的过程称为反射。 b)有两种方法可以获得自身的Class对象引用(对每一个被装载的类 型(类或接口),虚拟机都会为它创建一个 java.lang.Class的实例): i) Class c = Class.forName(“com.briup.ch06.Student”); /虚拟机中没有该类的Class的实例对象 ii) Class c =

39、stu.getClass; /虚拟机已经存在Class的实例对象 Class c = this.getClass; /虚拟机已经存在Class的实例对象 c) 利用反射编程的基本步骤 i) 获得Class对象; ii) 利用Class对象的方法获得类型的相关信息; iii) 访问/操作类型成员。 d)使用 example/ch06/ReflectTest1.java example/ch06/User.java example/ch06/ReflectTest2.java example/ch06/ReflectTest3.java 2) 扩展实验: 1)抽象类和接口比较 1. 相同点: a.

40、 都不能被实例化; b. 都能包含抽象方法; 2. 不同点; a. 抽象类中可以为部分方法提供默认的实现,从而避免子类中重复实现它们,提高代码的可重用性,而接口中只能包含抽象方法; b. 一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在。 2)几种内部类的区别 a. 声明的位置: 静态内部类:类的内部,方法的外部,用static关键字修饰; 实例内部类:类的内部,方法的外部,不用static关键字修饰; 局部内部类:方法的内部; 匿名内部类:既可以在类的内部,方法的外部,也可以在方法的内部; b. 实例化方式: 静态内部类:new Outer.

41、Inner; /在外部类外创建; new Inner; /在外部类内内部类外创建 实例内部类:new Outer.new Inner; /在外部类外创建; this.new Inner; /在外部类内内部类外创建 局部内部类:new Inner; /只能在方法内部创建; 匿名内部类:new 类名 ; 强制类型转换或者精确对应参数 c) HashMap和HashTable的区别 i).hashMap去掉了HashTable 的contains方法,但是加上了 containsValue和containsKey方法。 ii).hashTable同步的,而HashMap是非同步的,效率上逼hashT

42、able要高。 iii).hashMap允许空键值,而hashTable不允许。 三)作业: 1.编程 exercise/chap06 第七章:异常 一)基础实验: 1.异常基本概念 a). 异常产生的条件, 或者称为异常情况。在Java代码中哪些是异常情况呢? 例如: i. 整数相除运算中,分母为0; ii. 通过一个没有指向任何具体对象的引用去访问对象的方法; iii. 使用数组长度作为下标访问数组元素; iv. 将一个引用强制转化成不相干的对象; 等等; b). 异常会改变正常程序流程; 异常产生后,正常的程序流程被打破了,要么程序中止,要么程序被转向异常处理的语句; c). 当一个异常

43、的事件发生后,该异常被虚拟机封装形成异常对象抛出。 d). 用来负责处理异常的代码被称为异常处理器 f). 通过异常处理器来捕获异常 2.trycatch语句 在Java语言中,用try.catch语句来捕获处理异常。格式如下: try 可能会出现异常情况的代码; catch(异常类型 异常参数) 异常处理代码 catch(异常类型 异常参数) 异常处理代码 1). 如果try代码块中没有抛出异常,try代码块中语句会顺序执行完,catch代码块内容不会被执行; 2). 如果try代码块中抛出catch代码块所声明的异常类型对象,程序跳过try代码块中接下来代码,直接执行catch代码块中对应

44、内容; a. 可以存在多个catch代码块,究竟执行哪个,看抛出的异常对象是否是catch代码块中异常类型; b. 异常只能被一个异常处理器所处理, 不能声明两个异常处理器处理相同类型的异常; c. 多个catch语句块所声明的异常类型不能越来越小; d. 不能捕获一个在try语句块中没有抛出的异常; 3). 如果try代码块中抛出catch代码块未声明的异常类型对象,异常被抛给调用者;哪个调用了这段语句块哪个负责处理这个异常; 4)使用 example/ch07/PropertiesTest.java 3.finally语句 任何情况下都必须执行的代码 Example/ch07/ExceptionTest.java 4.异常层级关系 所有异常类的祖先类为java.lang.Throwable

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号