版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java高级程序设计第一部分第一章 Java入门基础第二章 异常第三章 Java Applet类型 第四章 图形用户界面GUI(一)AWT 第五章 Java中的事件处理机制 第六章 图形用户界面GUI(二)Swing 第七章 多线程 第八章 I/O输入输出流 第九章 Java数据库连接(JDBC) 第十章 Java网络编程 第二部分第一章 Java API 第二章 Java与多媒体 第三章 Java Bean基础 第一章Java入门基础 1.1 Java语言入门 1.1.1 Java语言特点 1.1.2 Java语言的运行环境1.1.2 Java Application程序与Java Appl
2、et程序 2.2 标识符、关键字和数据类型 1.2.1 标识符 1.2.2 关键字1.2.3 分隔符1.2.4 数据类型 1.2.5 常量与变量 第一章Java入门基础1.3 运算符、表达式和语句 1.3.1 运算符 1.3.2 表达式1.3.3 流程控制语句 1.4 类、对象和接口 1.4.1 类与对象 1.4.2 继承 1.4.3 包 1.4.4 接口1.1 Java语言入门 Java 语言的特点:简单面向对象分布性安全性体系结构中立可移植性解释执行多线程动态性1.1 Java语言入门 Java语言的应用前景:所有面向对象的应用开发。计算过程的可视化、可操作化的软件的开发。动态画面的设计,
3、包括图形图像的调用。交互操作的设计。英特网的系统管理功能模块的设计,包括Web页面的动态设计、管理和交互操作设计等。企业内部网上的软件开发。与各类数据库连接查询的SQL语句实现。其他应用类型的程序。1.1 Java语言入门 Java语言的运行环境 :初学Java语言最好选用Sun公司推出的软件开发工具箱JDKJDK的下载:登陆Java的官方网站()直接双击,程序即可自动解压缩并进行安装,一路都有画面指示,只需要遵循即可。可自行选择安装路径。安装完成后,在安装路径下的bin文件夹内,有我们所需的各种开发工具。 设置Java运行环境:进入“控制面板”,双击“系统”,弹出“系统属性”对话框,选择“高
4、级”单击“环境变量”按钮。1.1 Java语言入门 JDK实用命令程序:JavacJava编译器,将Java源程序编译成字节码JavaJava解释器,直接从类文件执行Java应用程序,即applicationAppletviewer小程序浏览器,执行html文件上的Java小程序,即Applet1.1 Java语言入门 Java Application程序与Java Applet程序 :根据结构组成和运行环境的不同,Java程序可以分为两类:Java Application和Java Applet。Java Application是完整的程序,需要独立的解释器来解释运行。而Java Apple
5、t则是嵌在HTML编写的Web页面中的非独立程序,由Web浏览器内部包含的Java解释器来解释运行。1.1 Java语言入门 Java Application程序:例:HelloWorld.javapublic class HelloWorld public static void main(String args ) System.out.println(“Hello! World!”);开始使用JDK:javac HelloWorld.java 编译器 编译出HelloWorld.classjava HelloWorld 解释器 运行主类1.1 Java语言入门 字节码的解释与运行:源代码
6、目标码可执行代码源代码字节码编译连接运行操作系统编译解释执行Java解释器1.1 Java语言入门 Java Applet程序:例:My.javaimport java.awt.Graphics; import java.applet.Applet; public class My extends Applet public void paint(Graphics g) g.drawString(Hello,java applet world,10,20); 1.1 Java语言入门 Java Applet程序:Java Applet 中不需要有 main 方法,它的要求是程序中有且必须有一个
7、类是系统类Applet的子类,也就是必须有一个类的类头部分以 extends Applet 结尾。所有的 Java Applet 程序中都必须有一个系统类 Applet 的子类,因为系统类 Applet 中已经定义了很多的成员域和成员方法,它们规定了 Applet 如何与执行它的解释器www浏览器配合工作。1.1 Java语言入门 Java程序的分类:Java Application由JAVA解释器独立运行字节码由专门的命令行启动程序执行程序中有定义了main()方法的主类Java Applet不能独立运行,字节码必须嵌入HTML文档当浏览器调用含APPLET的Web页面时执行程序中含有jav
8、a. applet. Applet 类的子类1.1 Java语言入门编写Java程序需要注意的几点:Java 区分大小写一个程序中可以有一个或多个类,但其中只能有一个主类(public class修饰)源程序编写完毕,应该用主类名作为文件名,再加后缀 .java 存储成磁盘文件1.2 标识符、关键字和数据类型标识符 :标识符是用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列。Java语言规定标识符由字母、下划线、美元符号和数字组成,并且需遵循以下规则:(1)区分大小写。(2)不能以数字开头。(3)以字母或下划线_或$符号开头。(4)不能使用Java的关键字。1.2 标识符、关
9、键字和数据类型关键字 :关键字是Java语言中已经被赋予特定意义的单词,一般用来表示一种数据类型,或者程序的结构等。保留字是为Java预留的关键字。目前Java语言定义的关键字如下:const(保留字) goto(保留字) abstract finally int public this boolean continue float interface return throw break default for long short throws byte do native static transient case double if new strictfp try catch els
10、e implements package super void char extends import private switch volatile class final instanceof protected synchronize while1.2 标识符、关键字和数据类型分隔符 :圆括号( )在定义和调用方法时用来容纳参数表,在控制语句或强制类型转换组成的表达式中用来表示执行或计算的优先权。花括号 用来包括自动初始化的数组的值,也用来定义程序块、类、方法以及局部范围。方括号 用来声明数组的类型,也用来表示撤消对数组的引用。分号 ; 用来终止一个语句。逗号 , 在变量声明中,用于分隔
11、变量表中的各个变量。在for控制语句中,用来将圆括号内的语句连接起来。句号 . 用来将软件包中的名字与它的子包或类分隔,也用来将引用变量与变量或方法分隔。另外,还有一种较为特殊的空白分隔符,空格、Tab跳格键及换行符均属于这种分隔符。1.2 标识符、关键字和数据类型数据类型 :Java共有八种基本类型:四种是整型,两种浮点数字型,一种字符型char,以及用于表示真假的布尔变量。Java定义了4种整数类型:字节型(byte),短整型(short),整型(int),长整型(long)。这些都是有符号的值,无小数部分的数字,正数或是负数。1.2 标识符、关键字和数据类型浮点类型 :Java中定义了两
12、种浮点类型:单精度(float)浮点型及双精度(double)浮点型。1.2 标识符、关键字和数据类型字符类型 :char类型用来表示Unicode编码表中的字符。Unicode定义的国际化的字符集能表示迄今为止人类语言的所有字符集。它是几十个字符集的统一,例如拉丁文,希腊语,阿拉伯语等等,因此它要求16位。Java中的char类型是16位,其范围是065,536,没有负数的char。标准字符集ASCII码的范围仍然是0127。Unicode的使用对于英语、德语、西班牙语或法语的语言是有点低效,因为它们的字符能容易地被包含在8位以内。1.2 标识符、关键字和数据类型布尔类型 :只有两个值,真(
13、true)和假(false)。Java中,布尔值和整数0、1不能相互转换。强制类型转换:在使用赋值运算时,可能会遇到等号左边的数据类型和等号右边的数据类型不一致的情况,这时需要把等号右边的数据类型转化成等号左边的数据类型。如果这2种类型是兼容的,那么Java将自动地进行转换。例如,把int类型的值赋给long类型的变量。而将变量从较长的数据类型转换成较短的数据类型时,则必须用到强制类型转换。 1.2 标识符、关键字和数据类型常量与变量 :1、整型常量2、浮点型常量3、布尔常量4、字符常量1.2 标识符、关键字和数据类型字符转义序列 :1.2 标识符、关键字和数据类型常量与变量 :在Java程序
14、中,我们采用如下的表示方法来定义常量: final 常量类型 常量名 = 常量值;(注意:常量名一般大写)例如:final byte BMAX = 3;变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。所有的变量都有一个作用域,定义变量的可见性,生存期。在Java中,所有的变量必须先声明再使用。声明方法如下:访问控制符 变量类型 变量名称 = 变量初值 (可选)1.3 运算符、表达式和语句Java有4大类运算符:算术运算、位运算、关系运算和逻辑运算。Java还定义了一些附加的运算符用于处理特殊情况。 1.3 运算符、表达式和语句关系运算符:1.3 运算符、
15、表达式和语句逻辑运算符:1.3 运算符、表达式和语句位运算符:1.3 运算符、表达式和语句表达式 :表达式是由变量、常量、对象、方法调用和操作符组成的公式。符合语法规则的表达式可以被编译系统理解、执行或计算,表达式的值就是对它运算后所得的结果。1.3 运算符、表达式和语句流程控制语句 :Java语言中有三种基本的流程控制语句,即顺序结构、分支结构和循环结构 。1.3 运算符、表达式和语句流程控制语句 :顺序结构是三种结构中最简单的一种,即语句按照书写的顺序依次执行。分支结构又称为选择结构,它将根据计算所得的表达式的值来判断应选择执行哪一个流程的分支。循环结构则是在一定条件下反复执行一段语句的流
16、程结构。这三种结构构成了程序局部模块的基本框架。1.3 运算符、表达式和语句分支语句 :Java中的分支语句有两个,一个是负责实现双分支的 if 语句,另一个是负责实现多分支的开关语句 switch 语句。if 语句是Java中的条件分支语句,它能将程序的执行路径分为两条。if语句的完整格式如下:if(条件表达式) 语句块; / if分支 else 语句块; / else分支1.3 运算符、表达式和语句分支语句 :基于嵌套if语句的通用编程结构称为 if-else-if 阶梯。如下: if(条件表达式) 语句块; / if 分支 else if(条件表达式) 语句块; / else if分支
17、else if(条件表达式) 语句块; / else if分支 else 语句块;1.3 运算符、表达式和语句分支语句 :switch语句是Java的多路分支语句。它的一般格式如下: switch(表达式) case 判断值1:语句块1 / 分支1 case 判断值2:语句块2 / 分支2 case 判断值n:语句块n / 分支n default:语句块n+1 / 分支n+1 1.3 运算符、表达式和语句switch语句:表达式必须为byte,short,int或char类型,每个case语句后的判断值必须是与表达式类型兼容的特定的一个常量,重复的case值是不允许的。switch语句的执行过
18、程如下:表达式的值与每个case语句中的常量作比较,如果发现了一个与之相匹配的,则执行该case语句后的代码;如果没有一个case常量与表达式的值相匹配,则执行default语句。在case语句序列中的break语句将引起程序流从整个switch语句退出。当遇到一个break语句时,程序将从整个switch语句后的第一行代码开始继续执行。1.3 运算符、表达式和语句循环语句 :Java的循环语句有for,while和do-while,这些语句创造了我们通常所称的循环。while语句是Java最基本的循环语句,当它的控制表达式是真时,while语句重复执行一个语句或语句块。通用格式如下:whil
19、e (条件表达式) 循环体条件表达式可以是任何布尔表达式。只要条件表达式为真,循环体就被执行;当条件为假时,程序控制就传递到循环后面紧跟的语句行。1.3 运算符、表达式和语句循环语句 :do-while循环的一般语法结构如下: do 循环体 while(条件表达式);do-while循环总是先执行循环体,然后再计算条件表达式,如果表达式为真,则循环继续,否则,循环结束。对所有的Java循环都一样,条件表达式必须是一个布尔表达式。1.3 运算符、表达式和语句循环语句 :for 循环的一般语法结构如下: for(表达式1;表达式2;表达式3) 循环体for循环的执行过程如下:第一步,当循环启动时,
20、先执行其初始化部分。通常,这是设置循环控制变量值的一个表达式,作为控制循环的计数器,并且初始化表达式仅被执行一次。下一步,计算表达式2的值,它必须是布尔表达式,它通常将循环控制变量与目标值相比较。如果这个表达式为真,则执行循环体;如果为假,则循环终止。再下一步执行循环体的反复部分,这部分通常是增加或减少循环控制变量的一个表达式。接下来重复循环 。1.3 运算符、表达式和语句跳转语句 :Java支持3种跳转语句:break,continue和return。这些语句把控制转移到程序的其他部分。在Java中,break语句有3种作用。第一,在switch语句中,它被用来终止一个语句序列。第二,它能被
21、用来退出一个循环。第三,它能作为一种“先进”的goto语句来使用。在循环中遇到break语句时,循环被终止,程序控制在循环后面的语句重新开始。对象类实体抽象数据类计算机世界现实世界实例化抽象映射计算机逻辑的实现概念世界面向对象技术:计算机世界向现实世界靠拢面向过程技术:现实世界向计算机世界靠拢对象的状态在计算机内部是用变量来表示,而对象的行为在计算机内部是用方法来表示的1.4 类、对象和接口下图展现了类与对象的基本关系: 1.4 类、对象和接口1.4 类、对象和接口类的含义 :在类中,数据或变量被称为实例变量,代码包含在方法内。定义在类中的方法和实例变量被称为类的成员。在大多数类中,实例变量被
22、定义在该类中的方法操作和存取。方法决定该类中的数据如何使用。每个对象都包含它自己对类中实例变量的拷贝。一个对象的数据是独立的且是惟一的。1.4 类、对象和接口类定义的通用格式如下:class 类名 type instance-variable1;/ .type instance-variableN;type methodname1(parameter-list) / 方法体/ .type methodnamen(parameter-list) / 方法体1.4 类、对象和接口类的含义 :要获得一个类的对象需要两步。第一步,你必须声明该类类型的一个变量,这个变量没有定义一个对象。第二步,该声明要
23、创建一个对象的实际的物理拷贝,并把对于该对象的引用(即内存地址)赋给该变量。这是通过使用new运算符实现的。在Java中,所有的类的对象都必须动态分配。1.4 类、对象和接口变量的定义和方法的定义 :方法定义包括两部分:方法的声明和方法体。一般格式为:返回值 方法名(参数列表) / 方法体使用方法时,需注意两件事情:第一,方法返回的数据类型必须与该方法指定的返回类型相兼容;第二,接收方法返回值的变量也必须与指定方法返回值的类型相兼容。1.4 类、对象和接口成员变量 :类的成员变量又分为实例成员变量和类成员变量。例如:class Name static String firstname;Stri
24、ng secondname;其中secondname是实例变量,firstname是类变量。如果成员变量的类型前面加上关键字static,这样的成员变量称做是类变量或静态成员变量。它们是类的域,不属于任何一个类的具体对象。保存在类的内存区域的公共存储单元。1.4 类、对象和接口构造方法 :构造方法是一种特殊的方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型。用于在new运算符开辟了新建对象的内存空间之后,调用它初始化这个新建对象。1.4 类、对象和接口多态性 :多态性是允许一个接口被多个同类动作使用的特性。在Java中,同一个类中的2个或2个以上的方法可以有同一个名字,只要
25、它们的参数声明不同即可。在这种情况下,该方法就被称为重载,这个过程称为方法重载。方法重载是Java实现多态性的一种方式。1.4 类、对象和接口继承 :继承是面向对象编程技术的一块基石,因为它允许建立分等级层次的类,使得程序结构清晰,降低编码和维护的工作量。在Java术语学中,被继承的类叫超类,继承超类的类叫子类,它是超类的一个专门用途的版本,它继承了超类定义的所有实例变量和方法,并且为它自己增添了独特的元素。Java中的继承是通过extends关键字来实现的。1.4 类、对象和接口隐藏 :当我们在子类中定义的成员变量和父类中的成员变量同名时,则子类的成员变量隐藏了父类的成员变量。当子类中定义了
26、一个方法,并且这个方法的名字、返回类型、及参数个数和类型同父类的某个方法完全相同时,父类的这个方法将被隐藏。子类通过成员变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为。1.4 类、对象和接口final :不接受方法被重载,可以在方法前定义final修饰符。希望防止一个类被继承,做到这点也只需在类声明前加final,声明一个final类含蓄的宣告了它的所有方法也都是final。1.4 类、对象和接口super :有时我们创建一个超类,该超类隐藏它自己实现的细节,这种情况下,子类没有办法直接访问或初始化它自己的这些变量,它可以用关键字super来实现引用它直接的超类。super
27、有两种通用形式:第一种调用超类的构造方法,第二种用来访问被子类的成员隐藏的超类成员。1.4 类、对象和接口abstract :定义一个超类,该超类定义了一种给定结构的抽象,不提供任何完整的方法实现,用于决定子类所必须实现的方法的本性,其他由每个子类自己去填写细节。声明一个抽象类,在关键字class前使用关键字abstract。抽象类不能通过new操作符直接实例化。所有抽象类的子类都必须执行超类中的所有抽象方法或者是它自己也声明成abstract。任何含有一个或多个抽象方法的类都必须声明成抽象类。声明一个抽象方法,用下面的通用形式:abstract type name ( parameter-l
28、ist ) ;1.4 类、对象和接口包 :包是Java语言中有效管理类的一个机制。 package语句定义一个存储类的名字空间。下面是package声明的通用形式: package pkg;Java用文件系统目录来存储包。任何你声明的myPackage中的一部分的类的.class文件被存储在一个myPackage目录中,目录名必须和包名严格匹配。1.4 类、对象和接口包 :在编写源文件时,除了自己编写类外,还经常需要使用Java提供的许多类,这些类可能在不同的包中,我们可以使用import语句引入系统包中的类。如: import java . awt . * ;包不仅是命名机制也是可见度控制机
29、制。类和包都是封装和容纳名称空间和变量及方法范围的方法。包就像盛装类和下级包的容器,类就像是数据和代码的容器。1.4 类、对象和接口三个访问控制符,private、public和protected :1.4 类、对象和接口接口 :Java中的接口在语法上有些类似于类,它定义了若干个抽象方法和常量,形成一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以帮助实现类似于类的多重继承的功能。 1.4 类、对象和接口接口的通用形式 :access interface name return-type method-name1(parameter-list);return-type metho
30、d-nameN(parameter-list);type final-varname1 = value;type final-varnameN = value;/ .access要么是public,要么就没有用修饰符。后者是默认访问范围。当它声明为public时,则接口可以被任何代码使用。 小结掌握:典型的Java程序开发环境Java基本数据类型、使用输入输出语句及算术运算符编写判定语句、面向对象的开发方法及句法结构 理解:Java语言的语言特性面向对象的编程思想 了解:applet与application的区别Java在开发Internet和Web的分布式客户/服务器应用中的作用Java高级
31、程序设计第一部分第一章 Java入门基础第二章 异常第三章 Java Applet类型 第四章 图形用户界面GUI(一)AWT 第五章 Java中的事件处理机制 第六章 图形用户界面GUI(二)Swing 第七章 多线程 第八章 I/O输入输出流 第九章 Java数据库连接(JDBC) 第十章 Java网络编程 第二部分第一章 Java API 第二章 Java与多媒体 第三章 Java Bean基础 第二章异常 2.1 什么是异常 2.1.1 异常处理基础2.1.2 Java异常处理机制 2.2 异常的类型 2.2.1 Java异常类类型2.2.2 Java异常类组成 2.3 未被捕获的异常
32、2.3.1 未被捕获的异常2.4 trycatch语句 2.4.1 系统自定义异常的处理 2.4.2 使用多重catch语句、嵌套try语句 第二章异常 2.5 自定义异常与throw关键字2.5.1 创建自己的异常2.5.2 使用throw抛出异常2.6 throws与finally关键字2.6.1 使用throws声明异常2.6.2 使用finally关键字2.7 Java的内置异常 2.7.1 Java的内置异常.1什么是异常语法错误和运行错误:对类似于C+这样的高级编程语言来说,捕获程序出错信息最理想的阶段是在编译期间,即试图运行程序以前。然而,并非所有错误都能在编译期间检测到。有些问
33、题可能会在程序运行时才暴露出来。例如,想打开的文件不存在、网络连接中断、受控操作数超出预定范围、除数为0等等。我们一般称编译时被检测出来的错误为语法错误,这种错误一旦产生并不会生成运行代码。而另一种是运行错误,它是在程序运行时代码序列中产生的一种出错情况。这种运行错误倘若没有及时进行处理,可能会造成程序中断、数据遗失乃至系统崩溃等问题。这种运行错误也就是我们常说的“异常”。.1什么是异常早期语言打开文件的程序段 readFile open the file; / 打开文件read the file into memory; / 将文件读入内存;close the file; / 关闭该文件;
34、处理异常后的程序段readFile int errorCode=0;open the file; if ( theFileOpen ) determine its size; / 测定文件长度if ( gotEnoughMemory ) read the file into memory; if ( readFailed ) errorCode = -1; else errorCode = -2; else errorCode = -3; close the file; return errorCode; .1什么是异常Java异常处理机制:为了能够及时有效地处理程序中的运行错误,Java中引
35、入了异常和异常类的概念。在Java中定义了很多异常类,每个异常类都代表了一种常见的运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象。一旦一个异常对象产生了,就将其抛出到其调用程序中,发出已经发生问题的信号。然后,调用方法捕获抛出的异常,在可能时,再恢复回来。.异常的类型Java异常体系图:.异常的类型Java异常类类型描述:Throwable类是类库java.lang包中的一个类,它派生了两个子类:Exception和Error。其中Error类由系统保留,而
36、Exception类则供应用程序使用。Error类描述了Java程序运行期间系统内部的错误以及资源耗尽的情况,如动态链接失败、虚拟机错误等,通常在Java编程语言中,Error类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中断。Exception类是Java程序中大量处理的异常,该类又可分为两类:从RuntimeException衍生出来的异常和衍生于Exception的其他子类的异常。RuntimeException类一般是由编程错误产生的,出现这类异常时,程序员需调试程序避免这类异常的产生,该类异常一般包括错误的造型、数组越界存取、空指针访问等。衍生于
37、Exception的其他子类的异常一般是由于不可预测因素造成的,使得语法正确的程序出现了问题,该类异常一般包括试图越过文件尾继续存放、试图打开一个错误的URL等。.异常的类型Exception类的构造方法有四个:public Exception( )public Exception(String message)public Exception(String message, Throwable cause)public Exception(Throwable cause)第二个构造方法可以接受字符串参数传入的信息,该信息通常是对该异常所对应的错误的描述。第三个构造方法中cause参数保存出错
38、原因,便于以后使用Throwable.getCause( )方法重获,该参数可为空。 .异常的类型Java异常类的常用方法:Exception类的常用方法:2.3 未被捕获的异常未被捕获的异常:下面的小程序包括一个故意导致被零除错误的表达式。class Exc0 public static void main(String args) int d = 0; int a = 42 / d; 下面是由标准javaJDK运行解释器执行该程序产生的输出:java.lang.ArithmeticException: / by zero at Exc0.main(Exc0.java:4)2.3 未被捕获的
39、异常未被捕获的异常:当Java运行时系统检查到被零除的情况,它构造一个新的异常对象然后引发该异常。这导致Exc0的执行停止,因为一旦一个异常被引发,它必须被一个异常处理程序捕获并且被立即处理。任何不是被你程序捕获的异常最终都会被该默认处理程序处理。默认处理程序显示一个描述异常的字符串,打印异常发生处的堆栈轨迹并且终止程序。2.3 未被捕获的异常未被捕获的异常:注意:类名Exc0,方法名main,文件名Exc0.java和行数4是怎样被包括在一个简单的堆栈使用轨迹中的。注意:引发的异常类型是Exception的一个名字叫做ArithmeticException的子类,该子类更明确的描述了何种类型
40、的错误方法。2.3 未被捕获的异常未被捕获的异常:下面是前面程序的另一个版本,它介绍了相同的错误,但是错误是在main()方法之外的另一个方法中产生的: class Exc1 static void subroutine() int d = 0; int a = 10 / d; public static void main(String args) Exc1.subroutine(); 2.3 未被捕获的异常未被捕获的异常:下面是由标准javaJDK运行解释器执行该程序产生的输出: java.lang.ArithmeticException: / by zero at Exc1.subrou
41、tine(Exc1.java:4) at Exc1.main(Exc1.java:7)如你所见,栈底是main的第7行,该行调用了subroutine()方法。该方法在第4行导致了异常。调用堆栈对于调试来说是很重要的,因为它查明了导致错误的精确的步骤。2.4 trycatch语句使用try和catch尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常。这样做有两个好处。第一,它允许你修正错误。第二,它防止程序自动终止。为防止和处理一个运行时错误,需要把你所要监控的代码放进一个try块就可以了。紧跟着try块的,包括一个说明你希望捕获的错误类型的catch
42、子句。2.4 trycatch语句下面是一个异常处理块的通常形式:try / block of code to monitor for errorscatch (ExceptionType1 exOb) / exception handler for ExceptionType1 catch (ExceptionType2 exOb) / exception handler for ExceptionType2 / . finally / block of code to be executed before try block ends 这里,ExceptionType 是发生异常的类型。2
43、.4 trycatch语句举例:class Exc2 public static void main(String args) int d, a; try / monitor a block of code. d = 0; a = 42 / d; System.out.println(“This will not be printed.”); catch (ArithmeticException e) System.out.println(“Division by zero.”); System.out.println(“After catch statement.”); 该程序输出如下:Di
44、vision by zero.After catch statement.2.4 trycatch语句使用try和catch注意:一旦异常被引发,程序控制由try块转到catch块。执行永远不会从catch块“返回”到try块。一个try和它的catch语句形成了一个单元。catch子句的范围限制于try语句前面所定义的语句。一个catch语句不能捕获另一个try声明所引发的异常(除非是嵌套的try语句情况)。被try保护的语句声明必须在一个大括号之内。不能单独使用try 。构造catch子句的目的是解决异常情况并且像错误没有发生一样继续运行。2.4 trycatch语句使用多重catch语句
45、、嵌套try语句某些情况,由单个代码段可能引起多个异常。处理这种情况,你可以定义两个或更多的catch子句,每个子句捕获一种类型的异常。当你用多catch语句时,异常子类必须在它们任何父类之前使用。这样,如果子类在父类后面,子类将永远不会到达,而且,Java中有不能到达的代码是一种语法错误。各个异常都派生于同一超类。如果一个catch处理方法用于捕获某个超类类型的异常对象,则它也可以捕获该类的所有子类的对象。这使得用一条简洁的catch子句表达式就能处理多个相关的错误,并且允许了多态性地处理这些相关的异常。2.5 自定义异常与throw关键字 创建自己的异常:系统定义的异常主要用来处理系统可以
46、预见较为常见的运行错误,对于某个应用所特有的运行错误,则需要编程人员根据程序的特殊逻辑在用户程序里自己创建用户自定义的异常类和异常对象。用户定义异常可通过扩展Exception类来创建的。这种异常类可以包含一个“普通”类所拥有的构造函数、变量以及方法。2.5 自定义异常与throw关键字 throw关键字的使用:用户程序自定义的异常不可能依靠系统自动抛出,必须借助于throw语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常类的新对象。程序执行在throw语句之后立即停止;后面的任何语句不被执行。最紧紧包围的try块用来检查它是否含有一个与异常类型匹配的catch语句。如果发现
47、了匹配的块,控制转向该语句;如果没有发现,次包围的try块来检查,以此类推。如果没有发现匹配的catch块,默认异常处理程序中断程序的执行并且打印堆栈轨迹。2.5 自定义异常与throw关键字 throw关键字的使用:Throw语句的通常形式如下:throw ThrowableInstance;这里,ThrowableInstance一定是Throwable类类型或Throwable子类类型的一个对象。注意:简单类型,例如int或char,以及非Throwable类,例如String或Object,不能用作异常。有两种可以获得Throwable对象的方法:在catch子句中使用参数或者用new
48、操作符创建。2.6 throws与finally关键字 throws关键字的使用:如果一个方法不能处理它自己所引发(throw)的代码,我们必须用关键字throws声明该方法可能引发的所有异常。主要是为了通知欲调用此方法的方法。由于该方法包含throw语句,所以要准备接受和处理它在运行过程中可能会抛出的异常。throws总是和方法说明出现在一起的。其形式如下:type method-name( parameter-list ) throws exception-list / body of method exception-list是该方法可引发的的异常列表以逗号分割。2.6 throws与f
49、inally关键字 throws关键字的使用注意事项:如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常做到这点你可以在方法声明中包含一个throws子句。一个throws子句列举了一个方法可能引发的所有异常类型。这对于除Error 或RuntimeException及它们子类以外类型的所有异常是必要的。一个方法可以引发的所有其他类型的异常必须在throws子句中声明。如果不这样做,将会导致编译错误。2.6 throws与finally关键字处理或声明规则:为了写出健壮的代码,Java编程语言要求,当一个方法在栈上发生Exception(它与
50、Error或RuntimeException不同)时,那么,该方法必须决定如果出现问题该采取什么措施。程序员可以做满足该要求的两件事:第一:通过将Trycatch()块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch块是空的,这也算是处理情况。第二:让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是按如下所示通过用throws子句标记的该调用方法的声明来实现的:public void troublesome() throws IOException2.6 throws与finally关键字 finally关键字的使用:在Jav
51、a语言中,当异常抛出时,程序将跳出try块,执行try-catch语句块后面的程序代码,然而在某些情况下,我们希望无论异常发生还是被捕获时,有些语句必须执行。例如无论出现任何异常情况,我们都需要进行保存数据、关闭文件等操作。finally语句解决了这一问题,我们只需在try-catch语句块后接一个finally块,不管是否发生异常,都将执行finally块中的代码。 2.7 Java的内置异常 Java的内置异常 :在标准包java. lang中,Java定义了若干个异常类。其中多数从RuntimeException派生的异常都自动可用,而且它们不需要通知所有欲调用此方法的方法来检查该异常,
52、故不需要被包含在任何方法的throws列表中。这被叫做不受控的异常。因为编译器不检查它来看一个方法是否处理或引发了这些异常。 java. lang定义的其他异常必须在方法的throws列表中包括,方法产生其中的某个异常但是不能自己处理它,这些叫做受控的异常 。 2.7 Java的内置异常不受控的异常:2.7 Java的内置异常不受控的异常:不受控异常的出现表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况,比如,数组索引不超出数组界限则ArrayIndexOutOfBoundsException异常从不会抛出。通常对它不做处理,会导致一个运行时错误信息。尽管编译器对于不
53、受控异常没有捕获或者声明的强制要求,但知道可能发生这种异常时也应提供合适的异常处理代码。2.7 Java的内置异常受控的异常:小结使用异常:异常处理为控制具有很多动态运行时特性的复杂程序提供了一个强大的机制。把try,throw,和catch当成处理错误简洁及程序逻辑上的反常边界条件是很重要的。如果你像多数程序员一样,那么你可能习惯于在方法失败时返回一个错误代码。在你用Java编程时,你应该打破这个习惯。当方法可能失败时,引发一个异常。这是处理失败模式的一个更简洁的方法。小结掌握:定义异常使用try、catch语句使用throw、throws和finally关键字理解:异常的分类了解:程序中引
54、入异常机制的好处Java高级程序设计第一部分第一章 Java入门基础第二章 异常第三章 Java Applet类型 第四章 图形用户界面GUI(一)AWT 第五章 Java中的事件处理机制 第六章 图形用户界面GUI(二)Swing 第七章 多线程 第八章 I/O输入输出流 第九章 Java数据库连接(JDBC) 第十章 Java网络编程 第二部分第一章 Java API 第二章 Java与多媒体 第三章 Java Bean基础 第三章Java Applet 类型3.1 HTML简介3.2 浏览器处理Applet3.3 Applet类及其方法3.3.1Applet类的层次3.3.2Applet
55、运行状态控制基本方法3.3.3Applet绘图3.1 HTML简介HTML简介HTML即超文本标记语言HyperText Markup Language。它源于SGML(Standard Generalized Markup Language)。 目前HTML已经发展到HTML4.01。此外,近年来又出现了XML、XHTML这些新的标记语言。XML是“eXtensible Markup Language”的缩写,即可扩展标记语言。 3.1 HTML简介在结构上,HTML文件可分为文件头和主体两部分。文件头为“head”包含的部分。格式为:。主要用于描述文件的标题、语言字符集、内容分级、关键词等
56、。主体为“body”包含的部分。格式为:。网页中可看到的内容就包含在这部分中。下面是个简单例子欢迎光临我的主页Hello!World!3.2 浏览器处理Applet 浏览器处理Applet Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的一种Java类。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。Applet是Java技术容器的一种特定类型,其执行方式不同于应用程序。一个应用程序Application是从它的main( )方法被调用开始的,而一个Applet的生命周期在一定程度上则要复杂得多。3.2 浏览器处理Applet由
57、于Applet在Web浏览器环境中运行,所以它并不直接由键入的一个命令启动。你必须要创建一个Java-powered页来告诉浏览器需装载什么以及如何运行它。当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。3.3 Applet类及其方法 Applet类的层次 Java.applet.Applet类实际上是java.awt.Panel的子类。Applet和AWT类的层次如下: 3.3
58、Applet类及其方法Applet运行状态控制基本方法Applet类中的四种基本方法用来控制其运行状态:init( )、start( )、stop( )、destroy( )init( ) 这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。start( ) 系统在调用完init( )方法之后,将自动调用start( )方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start( )方法。这就意味着start()方法可以被多次执行,而不像init( )方法。 3.3 Applet类及其方法stop(
59、) 这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。 destroy( ) 与对象的finalize( )方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty( )方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy( )方法中一般可以要求收回占用的非内存独立资源。(如果在Applet仍在运行时浏览器
60、被关闭,系统将先执行stop( )方法,再执行destroy( )方法)。 3.3 Applet类及其方法Applet绘图 paint(Graphics g)方法显露处理自动地发生,且导致对paint( )方法的一次调用。一种Graphics类的被称为裁剪矩形的设备常用于对paint ()方法进行优化。repaint( )方法对repaint( )的调用可通知系统:你想改变显示。repaint( )实际上产生了一个调用另一方法update( )的AWT线程。update(Graphics g)方法update方法通常清除当前的显示并调用paint( )。update( )方法可以被修改,如:为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临沂科技职业学院《精细化学工艺学》2023-2024学年第一学期期末试卷
- 辽河石油职业技术学院《粮油食品加工工艺学》2023-2024学年第一学期期末试卷
- 江西信息应用职业技术学院《食品质量与安全控制》2023-2024学年第一学期期末试卷
- 江苏工程职业技术学院《女性文学鉴赏》2023-2024学年第一学期期末试卷
- 华东政法大学《健康教育》2023-2024学年第一学期期末试卷
- 湖北黄冈应急管理职业技术学院《外国文学专题》2023-2024学年第一学期期末试卷
- 遵义医药高等专科学校《材料焊接性》2023-2024学年第一学期期末试卷
- 珠海格力职业学院《外科学Ⅱ》2023-2024学年第一学期期末试卷
- 重庆青年职业技术学院《高等天然药物化学》2023-2024学年第一学期期末试卷
- 中华女子学院《运动控制系统》2023-2024学年第一学期期末试卷
- 第8课《列夫-托尔斯泰》公开课一等奖创新教学设计
- 人教版2024-2025学年七年级数学上册计算题专项训专题09运用运算律简便运算(计算题专项训练)(学生版+解析)
- GB 26134-2024乘用车顶部抗压强度
- 2024年高中生物新教材同步必修第二册学习笔记第3章 本章知识网络
- (正式版)YS∕T 5040-2024 有色金属矿山工程项目可行性研究报告编制标准
- 2024版软包合同模板
- GB/T 36548-2024电化学储能电站接入电网测试规程
- NB-T+31010-2019陆上风电场工程概算定额
- JT-T-617.7-2018危险货物道路运输规则第7部分:运输条件及作业要求
- 2024土方运输居间合同范本
- 新概念英语第二册考评试卷含答案(第49-56课)
评论
0/150
提交评论