JAVA程序设计基础第4章异常处理和常用系统类.ppt

上传人:wuy****n92 文档编号:80463222 上传时间:2023-03-23 格式:PPT 页数:72 大小:295.99KB
返回 下载 相关 举报
JAVA程序设计基础第4章异常处理和常用系统类.ppt_第1页
第1页 / 共72页
JAVA程序设计基础第4章异常处理和常用系统类.ppt_第2页
第2页 / 共72页
点击查看更多>>
资源描述

《JAVA程序设计基础第4章异常处理和常用系统类.ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计基础第4章异常处理和常用系统类.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章 异常处理和常用系统类异常处理和常用系统类4.1 异常处理机制异常处理机制4.2 String类和类和StringBuffer类类4.3 AWT4.4 Java applet4.1 异常处理机制异常处理机制4.1.14.1.1什么是异常什么是异常用用任任何何一一种种计计算算机机语语言言设设计计的的程程序序在在运运行行时时都都可可能能出出现现各各种种错错误误,常常见见的的错错误误如如除除数数为为0、文文件件不不存存在在、文文件件不不能能打打开开、数数组组下下标标超超过过界界限限、内内存存不不够够用用等等。对对于于这这种种在在运运行行中中出出现现的的错错误误,计计算算机机系系统统中中通常

2、有两种处理办法。通常有两种处理办法。(1)由计算机系统本身直接检测程)由计算机系统本身直接检测程序错误,遇到错误时使程序终止运行。这序错误,遇到错误时使程序终止运行。这种处理方法的优点是使程序设计比较简单。种处理方法的优点是使程序设计比较简单。但是,对程序错误一概地采用终止运行办但是,对程序错误一概地采用终止运行办法,显然过于简单化。因为有些情况下,法,显然过于简单化。因为有些情况下,完全可以通过其他途径保持程序继续运行。完全可以通过其他途径保持程序继续运行。比如,由于文件名不符合要求而无法打开比如,由于文件名不符合要求而无法打开文件,那么,可以提示用户输入一个新的文件,那么,可以提示用户输入

3、一个新的文件名,从而使程序继续往下运行。文件名,从而使程序继续往下运行。(2)由程序员在程序设计中兼顾错)由程序员在程序设计中兼顾错误检测、错误信息显示和出错处理。这种误检测、错误信息显示和出错处理。这种处理方法的优点是减少了中途终止程序运处理方法的优点是减少了中途终止程序运行的可能性。但是,要求程序员在程序设行的可能性。但是,要求程序员在程序设计中不仅将精力用于正常处理过程,还要计中不仅将精力用于正常处理过程,还要精心考虑错误检测和处理,这会使程序变精心考虑错误检测和处理,这会使程序变得复杂。并且,这类错误检测往往是多数得复杂。并且,这类错误检测往往是多数程序中重复甚至在一个程序中多次重复。

4、程序中重复甚至在一个程序中多次重复。而另一方面,如果程序中某处忽略了应有而另一方面,如果程序中某处忽略了应有的检测,又将引起程序总体结果的错误。的检测,又将引起程序总体结果的错误。Java采采用用异异常常处处理理机机制制来来处处理理程程序序运运行行中中的的错错误误。按按照照这这种种机机制制,将将程程序序运运行行中中的的所所有有错错误误都都看看成成一一种种异异常常,通通过过对对语语句句块块的的检检测测,一一个个程程序序中中所所有有的的异异常常被被收收集集起起来来放放在在程程序序的的某某一一段段中中去去处处理理。在在Java系系统统中中,专专门门设设置置了了一一个个调调用用栈栈,此此栈中装有指向异

5、常处理方法的指针。栈中装有指向异常处理方法的指针。在程序运行时,系统会把收集到的异在程序运行时,系统会把收集到的异常和异常处理指针所指的处理类型逐个比常和异常处理指针所指的处理类型逐个比较,如果找到相符的类型,那么就转向相较,如果找到相符的类型,那么就转向相应的方法处理,如没有在调用栈中找到相应的方法处理,如没有在调用栈中找到相应的类型指针,则终止程序运行,并显示应的类型指针,则终止程序运行,并显示解释信息。解释信息。在在Java程序中,异常一般由以下两种程序中,异常一般由以下两种原因引起。原因引起。(1)程序中存在非法操作,最简单的)程序中存在非法操作,最简单的例子就是除数为例子就是除数为0

6、的除法操作。这种原因常的除法操作。这种原因常常是程序员出于无意或大意造成的,所以常是程序员出于无意或大意造成的,所以称为隐式异常。常见的隐式异常可以通过称为隐式异常。常见的隐式异常可以通过java.lang包中的包中的Throwable类的子类类的子类Error处理。处理。(2)程序员在程序中使用了)程序员在程序中使用了throw语语句引起的异常。这种异常是程序员出于某句引起的异常。这种异常是程序员出于某种考虑有意安排的,所以称为显式异常。种考虑有意安排的,所以称为显式异常。在在throw语句中,都会指出处理显式异常的语句中,都会指出处理显式异常的对象,这些对象都是由对象,这些对象都是由jav

7、a.lang包的类包的类Throwable的子类的子类Exception再派生的子类再派生的子类生成的,每个对象完成对某种异常的处理生成的,每个对象完成对某种异常的处理功能,这些对象综合起来实现各种异常处功能,这些对象综合起来实现各种异常处理。理。比比如如Array-IndexOutOfBoundsException子子类类处处理理数数组组越越界界异异常常,IOException子子类类处处理理输输入入输输出出异异常常,而而ArithmeticException子子类类处处理理除数为除数为0导致的算术异常等。导致的算术异常等。4.1.24.1.2异常的层次结构异常的层次结构4.1.34.1.3

8、异常的处理异常的处理4.1.44.1.4创建自己的异常创建自己的异常4.2 String类和类和StringBuffer类类4.2.14.2.1StringString类类1String类的主要构造方法类的主要构造方法String类类有有多多个个构构造造方方法法,主主要要的的有有下列下列5个:个:String();String(char chars);String(char chars,int startIndex,int numChars);String(byte ascii,int hiByte);String(byte ascii,int hiByte,int startIndex,in

9、t numChars);第第1个构造方法生成一个空串。个构造方法生成一个空串。第第2个构造方法生成一个字符数组。个构造方法生成一个字符数组。第第3个构造方法生成一个字符串,这个个构造方法生成一个字符串,这个字符串是从字符数组字符串是从字符数组chars 中提取的,具中提取的,具体讲,即从体讲,即从chars 数组的数组的startIndex位置位置开始提取字符,共提取开始提取字符,共提取numChars个字符组个字符组成一个字符串。成一个字符串。第第4个构造方法是以字节数组的形式生个构造方法是以字节数组的形式生成一个字符串,数组中存放字符串各字符成一个字符串,数组中存放字符串各字符对应的对应的

10、ASCII码。码。第第5个构造方法也是从字节数组生成一个构造方法也是从字节数组生成一个字符串。具体讲,就是以字节数组个字符串。具体讲,就是以字节数组ascii 的的 startIndex处开始,共提取处开始,共提取numChars个个字符构成字符串,如为字符构成字符串,如为ASCII 字符,则字符,则hiByte的值为的值为0。例例4-5:import javax.swing.*;public class StringConstructors public static void main(String args)char charArray=b,i,r,t,h,d,a,y;byte byte

11、Array=(byte)n,(byte)e,(byte)w,(byte),(byte)y,(byte)e,(byte)a,(byte)r;StringBuffer buffer;String s,s1,s2,s3,s4,s5,s6,s7,output;s=new String(hello);buffer=new StringBuffer(Welcome to Java Programming!);s1=new String();s2=new String(s);s3=new String(charArray);s4=new String(charArray,6,3);s5=new String

12、(byteArray,4,4);s6=new String(byteArray);s7=new String(buffer);output=s1=+s1+ns2=+s2+ns3=+s3+ns4=+s4+ns5=+s5+ns6=+s6+ns7=+s7;JOptionPane.showMessageDialog(null,output,Demonstrating String Class Constructors,JOptionPane.INFORMATION_MESSAGE);System.exit(0);运行结果见图运行结果见图4-5。图图4-5程程序序分分析析:String类类提提供供了了9

13、个个构构造造函函数数,以以便便使使用用各各种种方方法法初初始始化化String对对象象。例题共演示了例题共演示了7种。种。程程序序“s1=new String()”实实例例化化一一个个新新的的String对对象象,并并使使用用String类类的的缺缺省省构构造造函函数数将将它它赋赋给给引引用用s1。新新的的String对对象象没没有字符(即空串),长度为有字符(即空串),长度为0。“s2=new String(s););”例化一个新的例化一个新的String对象,并使用对象,并使用String类的拷贝构造函类的拷贝构造函数,将它赋给引用数,将它赋给引用s2。s被当作参数传送给被当作参数传送给构

14、造函数,新的构造函数,新的String对象包含了对象包含了String对对象象s中的字符的拷贝。中的字符的拷贝。在大多数情况下,没有必要拷贝已有在大多数情况下,没有必要拷贝已有的的String对象。对象。String对象是不变的,一旦对象是不变的,一旦创建后就不能改变它们的内容(字符串)。创建后就不能改变它们的内容(字符串)。而且,如果有一个或多个引用指向某而且,如果有一个或多个引用指向某个个String对象,垃圾收集器就不能回收该对对象,垃圾收集器就不能回收该对象。也就是说,象。也就是说,String引用既不能用于修改引用既不能用于修改String对象,也不能删除对象,也不能删除String

15、对象。这一对象。这一点与点与C语言或语言或C语言是不同的。语言是不同的。“s3=new String(charArray););”实实例化一个新的例化一个新的String对象,并使用以字符数对象,并使用以字符数组为参数的组为参数的String类构造函数,将它赋给引类构造函数,将它赋给引用用s3。新的。新的String对象包含了数组中字符的对象包含了数组中字符的拷贝。拷贝。“s4=new String(charArray,6,3);”实实例例化化一一个个String对对象象,使使用用以以一一个个字字符符数数组组和和两两个个整整数数为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给

16、引引用用s4。第第2个个参参数数指指定定了了在在数数组组中中拷拷贝贝字字符符的的起起始始位位置置(offset)。第第3个个参参 数数 指指 定定 了了 数数 组组 中中 拷拷 贝贝 字字 符符 的的 数数 目目(count),新新的的String对对象象包包含含了了数数组组中中指指定定字字符符的的拷拷贝贝。如如果果offset或或count参参数数指指定定的的所所取取元元素素超超过过了了字字符符数数组组的的界界限限,就就会会产产生生 StringIndexOutOfBoundsException 的的例例外外处理。处理。“s5=new String(byteArray,4,4);”实实例例化

17、化一一个个新新的的String对对象象,使使用用以以一一个个byte数数组组和和两两个个整整数数为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给引引用用s5。第第2和和第第3个个参参数数分分别别指指定定了了offset和和count。新新的的String对对象象包包含含了了数数组组中中指指定定 byte 的的拷拷贝贝。如如果果offset或或count参参数数指指定定的的所所取取元元素素超超过过了了byte数数组组 的的 界界 限限,就就 会会 产产 生生 一一 个个StringIndexOutOfBoundsException的的例例外外处理。处理。“s6=new Stri

18、ng(byteArray);”实实例例化化一一个个新新的的String对对象象,使使用用以以一一个个byte数数组组为为参参数数的的 String类类构构造造函函数数,将将它它赋赋给给引引用用s6。新新的的String对对象象包包含含了了数数组组中中byte的拷贝。的拷贝。“s7=new String(buffer);”实实例例化化一一个个新新的的String对对象象,使使用用以以StringBuffer为为参参数数的的String类类构构造造函函数数,将将它它赋赋给给引引用用s7。StringBuffer是是一一个个可可动动态态改改变变大大小小和和内内容容的的字字符符串串。新新的的Strin

19、g对对象象包包含含了了StringBuffer中字符的拷贝。中字符的拷贝。2 String类类 的的 length、charAt和和getChars方法方法下下面面的的例例子子演演示示了了String 类类的的length、charAt和和getChars方方法法,它它们们分分别别用用于于确确定定String 类类的的长长度度、取取String某某一一指指定定位位置置的字符以及取的字符以及取String某一子串。某一子串。3String类的字符串比较类的字符串比较例例4-7:import javax.swing.JOptionPane;public class StringCompare pu

20、blic static void main(String args)String s1,s2,s3,s4,output;s1=new String(hello);s2=new String(good bye);s3=new String(Happy Birthday);s4=new String(happy birthday);output=s1=+s1+ns2=+s2+ns3=+s3+ns4=+s4+nn;if(s1.equals(hello)output+=s1 equals hellon;else output+=s1 does not equal hellon;if(s1=hello)

21、output+=s1 equals hellon;else output+=s1 does not equal hellon;if(s3.equalsIgnoreCase(s4)output+=s3 equals s4n;else output+=s3 does not equal s4n;output+=pareTo(s2)is +pareTo(s2)+pareTo(s1)is +pareTo(s1)+pareTo(s1)is +pareTo(s1)+pareTo(s4)is +pareTo(s4)+pareTo(s3)is +pareTo(s3)+nn;if(s3.regionMatche

22、s(0,s4,0,5)output+=First 5 characters of s3 and s4 matchn;else output+=First 5 characters of s3 and s4 do not matchn;if(s3.regionMatches(true,0,s4,0,5)output+=First 5 characters of s3 and s4 match;else output+=First 5 characters of s3 and s4 do not match;JOptionPane.showMessageDialog(null,output,Dem

23、onstrating String Class Constructors,JOptionPane.INFORMATION_MESSAGE);System.exit(0);4在字符串中定位字符和子串在字符串中定位字符和子串5从字符串中抽取子串从字符串中抽取子串6字符串连接字符串连接public String concat(String st)可可返返回回一一个个字字符符串串,它它将将把把参参数数str添添加加在在原原字字符符串串的的后后面面形形成成一一个个新新的的字字符符串串。但但在在Java中中,更更多多的的是是使使用用“”来来连连接接字字符符串。串。这这里里读读者者可可能能会会产产生生一一个

24、个小小小小的的迷迷惑惑,因因为为前前面面我我们们讲讲过过String对对象象是是不不能能改改变变的的。实实际际上上,字字符符串串的的连连接接是是由由编编译译器器利利用用StringBuffer的的方方法法append来来实实现现的的。这这在在下面的章节中讲解。下面的章节中讲解。例例4-10:import javax.swing.*;public class StringConcat public static void main(String args)String s1=new String(Happy ),s2=new String(Birthday),output;output=s1=+

25、s1+ns2=+s2;output+=nnResult of s1.concat(s2)=+s1.concat(s2);output+=ns1 after concatenation=+s1;JOptionPane.showMessageDialog(null,output,Demonstrating String Method concat,JOptionPane.INFORMATION_MESSAGE);System.exit(0);运行结果见图运行结果见图4-10。7转化为字符串转化为字符串图图4-104.2.24.2.2StringBufferStringBuffer类类String

26、类类提提供供了了很很多多处处理理字字符符串串的的功功能能。但但是是,一一旦旦创创建建了了字字符符串串对对象象,它它的的内内 容容 就就 永永 远远 不不 会会 变变。下下 面面 将将 讨讨 论论StringBuffer类类的的特特点点。这这个个类类可可以以创创建建和和操操纵纵动动态态字字符符串串,即即可可修修改改的的字字符符串串。每每个个StringBuffer都都能能够够存存储储由由它它的的容容量量所所指指定定的的一一些些字字符符。如如果果超超过过了了StringBuffer的的容容量量,容容量量就就会会自自动动地地扩扩大大以以容容纳纳多多出出来来的的字字符符。我我们们将将看看到到,Stri

27、ngBuffer类类还还可可用来实现用于字符串连接的运算符用来实现用于字符串连接的运算符。String 对对 象象 是是 常常 量量 字字 符符 串串,StringBuffer 对对象象是是可可修修改改的的字字符符串串。Java 区区分分字字符符串串和和可可修修改改的的字字符符串串是是为为了了优优化化的的目目的的。特特别别地地,Java可可以以实实现现有有关关String 对对象象的的某某些些优优化化,例例如如多多个个引引用用共共享享一一个个String 对对象象,因因为为它它知知道道这这些些对对象象不会改变。不会改变。注注意意:在在选选择择是是用用String对对象象还还是是用用String

28、Buffer对对象象来来表表示示一一个个字字符符串串时时,如如果果该该对对象象确确实实不不会会改改变变,则则总总是是使使用用String对对象象,这这样样做做可可以以改改善善性性能能。对对String对对象象调调用用非非 String 类类的的StringBuffer方方法法是是一一种种语语法法错错误误。StringBuffer 提提供供的的方方法法有有一一些些与与 String 相相同同,有有一一些些不不同同。最最主主要要的的方方法法有有两两组组,一一组组是是append,另另一一组组是是 insert。4.3 AWT4.3.14.3.1AWTAWT概述概述4.3.24.3.2AWTAWT的

29、特点的特点4.3.34.3.3AWTAWT应用应用4.4 Java applet4.4.14.4.1JavaappletJavaapplet的特点的特点Java applet与与Java应应用用程程序序不不同同。它它们的不同之处有以下几个方面。们的不同之处有以下几个方面。(1)Java应应用用程程序序中中,必必须须有有一一个个main()方方法法。Main()方方法法是是程程序序的的入入口口,当当程程序序开开始始运运行行时时,解解释释器器首首先先查查找找main()方方法法并并执执行行。而而Java applet中中则则不不需需要要main()方方法法,它它必必须须嵌嵌入入HTML文文件件中中

30、,由由支支持持Java applet的浏览器运行。的浏览器运行。(2)Java应用程序可以独立运行。而应用程序可以独立运行。而Java applet不能独立运行,需要依赖于网不能独立运行,需要依赖于网络浏览器。络浏览器。(3)Java应用程序所实现的功能是完应用程序所实现的功能是完全的,不需依赖于其他程序。而全的,不需依赖于其他程序。而Java applet实现的功能是不完全的,它必须借助实现的功能是不完全的,它必须借助于浏览器中预先设计好的功能和已有的图于浏览器中预先设计好的功能和已有的图形界面。形界面。Java applet只需接收浏览器发送只需接收浏览器发送给它的消息,并及时做出响应。给

31、它的消息,并及时做出响应。(4)Java应应用用程程序序中中的的所所有有方方法法的的使使用用是是通通过过调调用用实实现现的的。可可以以人人为为控控制制。而而Java applet中中有有一一部部分分方方法法是是固固定定的的,只只能能由由浏浏览览器器在在特特定定时时刻刻和和场场合合调调用用,不不能人为控制,但可以重载。能人为控制,但可以重载。4.4.24.4.2 JavaJavaappletapplet的的程程序序结结构构Java applet的一般程序结构如下:的一般程序结构如下:import java.applet.*;import java.awt.*;public class 子类名子类

32、名 extends Applet /定义定义Applet类的子类类的子类 public void init()方法体方法体 /初始化方法初始化方法 public void start()方法体方法体 /开始执行方法开始执行方法 public void stop()方法体方法体 /停止执行方法停止执行方法 public void destroy()方法体方法体 /退出方法退出方法 public void paint(Graphics g)方法体方法体 /绘画方法绘画方法从从Java applet程程序序结结构构看看出出,Java applet由由若若干干类类组组成成,无无需需main()方方法法

33、,但但必必须须有有且且仅仅有有一一个个主主类类,该该类类是是Applet类类的的子子类类,且且被被声声明明为为public。程程序序被被保保存存时时,程程序序名名必必须须命命名名为为主主类类名名,即即程程序序名名与与主主类类名名完完全全相相同同,后后缀缀为为.java。主主类类中中定定义义了了init()、start()、stop()、destroy()和和paint()方方法法,这这些些方方法法是是从从Applet中中继继承承的的,有有固固定定的的含含义义,由由浏浏览览器器在在时时机机成成熟熟时时自自动动执行。执行。4.4.34.4.3AppletApplet的主要方法的主要方法在在浏浏览览

34、器器中中运运行行Applet程程序序,从从运运行行开开始始到到运运行行结结束束,Applet程程序序需需经经历历4个个状状态态,分分别别是是初初始始状状态态、运运行行状状态态、停停止止态态和和消消亡亡状状态态。这这4种种状状态态分分别别对对应应Applet的的4个个主主要要方方法法:init()、start()、stop()和和destroy()。对于支持对于支持Java的浏览器,如果在运行的浏览器,如果在运行一个一个HTML文件时发现该文件包含文件时发现该文件包含Applet程序,浏览器就会生成该程序,浏览器就会生成该Applet的一个实的一个实例,并调用例,并调用init()方法,进入初始

35、化状态,方法,进入初始化状态,在该状态下完成在该状态下完成Applet的一些初始化操作。的一些初始化操作。初始化完成后,浏览器接着调用初始化完成后,浏览器接着调用start()方法,方法,进入运行状态,真正开始执行进入运行状态,真正开始执行Applet,在,在该状态下该状态下Applet通常会启动一些线程执行通常会启动一些线程执行各种任务。各种任务。当当退退出出当当前前主主页页时时,浏浏览览器器调调用用stop()方方法法终终止止在在运运行行状状态态下下启启动动的的线线程程,进进入入停停止止状状态态。当当用用户户退退出出浏浏览览器器时时,浏浏览览器器首首先先调调用用Applet的的stop()

36、方方法法,停停止止Applet的的 执执 行行,然然 后后 调调 用用 destroy()方方 法法 释释 放放Applet占用的系统资源,进入消亡状态。占用的系统资源,进入消亡状态。下下面面具具体体介介绍绍init()、start()、stop()和和destroy()4种方法。种方法。1Init()方法方法在在Applet执执行行过过程程中中,init()方方法法只只执执行行一一次次。当当浏浏览览器器第第一一次次浏浏览览含含有有Applet的的Web页页载载入入Applet时时,就就会会执执行行init()方方法。法。由于在由于在Applet执行过程中,该方法只执行过程中,该方法只被执行一

37、次,所以可以在被执行一次,所以可以在init()方法中进行方法中进行一些只需执行一次的初始化操作,如变量一些只需执行一次的初始化操作,如变量的初始化、设置的初始化、设置Applet初始状态、载入图初始状态、载入图形或字体、获取形或字体、获取HTML中中Applet标记单元标记单元中中设定的参数等。设定的参数等。2start()方法方法调用完调用完init()方法,浏览器将调用方法,浏览器将调用start()方法启动方法启动Applet。和和init()方法不同,在方法不同,在Applet的执行过程中,的执行过程中,start()方法可被浏览方法可被浏览器调用多次。在下列情况下,浏览器会调器调用

38、多次。在下列情况下,浏览器会调用用start()方法。方法。(1)浏览器从图标状态恢复为窗口)浏览器从图标状态恢复为窗口状态或缩放浏览器窗口时。状态或缩放浏览器窗口时。(2)Applet第一次载入时。第一次载入时。(3)离开该)离开该Web页后又再返回时。页后又再返回时。(4)reload该页面时。该页面时。在在start()方法中可启动相关线程来控方法中可启动相关线程来控制制Applet,给引入类对象发送消息,或以,给引入类对象发送消息,或以某种方式通知某种方式通知Applet开始运行。该方法是开始运行。该方法是Applet的主体。的主体。3stop()方法方法该方法与该方法与start()

39、方法是相对应的,在方法是相对应的,在Applet执行过程中,也会被浏览器调用多执行过程中,也会被浏览器调用多次。在下列情况下,浏览器会调用次。在下列情况下,浏览器会调用stop()方方法。法。(1)浏览器从图标状态恢复为窗口状)浏览器从图标状态恢复为窗口状态或缩放浏览器窗口时。态或缩放浏览器窗口时。(2)离开)离开Applet所在所在Web页时。页时。(3)reload该页面时。该页面时。(4)关闭该)关闭该Web页时。页时。(5)从该)从该Web页退出浏览器运行时。页退出浏览器运行时。stop()方法可在适当时机挂起方法可在适当时机挂起 Applet,停止一些占用系统资源的工作,释放系统停止

40、一些占用系统资源的工作,释放系统处理资源,以提高系统的运行速度。处理资源,以提高系统的运行速度。4destroy()方法方法在彻底结束对该在彻底结束对该Web页的访问或退出页的访问或退出浏览器时调用浏览器时调用destroy()方法,卸载方法,卸载Applet,释放载入释放载入Applet时分配的系统资源。在时分配的系统资源。在Applet的执行过程中,的执行过程中,destroy()方法只执方法只执行一次。行一次。destroy()方法是方法是Applet类的类方法,类的类方法,只能用于只能用于Applet。可在该方法中执行释放可在该方法中执行释放系统资源的代码。但一般不需重写系统资源的代码

41、。但一般不需重写destroy()方法,因为方法,因为Java运行系统本身会自动进行运行系统本身会自动进行“垃圾垃圾”处理和内存管理,除非用了特殊处理和内存管理,除非用了特殊的资源如创建的线程。的资源如创建的线程。注意:注意:destroy()方法与方法与stop()方法不同。方法不同。除了上述除了上述4个方法外,个方法外,Applet还提供一还提供一个非常重要的方法:个非常重要的方法:paint(Graphics g)方法。该方法用于进行绘图的具体操作,方法。该方法用于进行绘图的具体操作,但没有实现任何操作,用户可重写该方法,但没有实现任何操作,用户可重写该方法,实现个性化的绘图操作。实现个

42、性化的绘图操作。在在Applet执行过程中,执行过程中,paint()方法可方法可以被浏览器自动调用执行绘图操作,可调以被浏览器自动调用执行绘图操作,可调用多次。当调整浏览窗口大小、缩放浏览用多次。当调整浏览窗口大小、缩放浏览窗口、移动窗口或窗口、移动窗口或reload等需要重绘窗口等需要重绘窗口时都会调用时都会调用paint()方法。方法。与其他与其他4个方法不同的是,个方法不同的是,paint()中需中需传递一个参数,该参数是传递一个参数,该参数是Graphics类的对类的对象,由这个对象来完成具体的绘图操作。象,由这个对象来完成具体的绘图操作。Graphics对象由浏览器自动创建并将其传

43、对象由浏览器自动创建并将其传送给送给paint()方法。方法。注意:应在注意:应在Applet中引入中引入Graphics类类的包或该类:的包或该类:import java.awt.Graphics;例例4-16:import java.applet.*;import java.awt.*;public class example4_16 extends Applet private int InitCount;private int StartCount;private int StopCount;private int DestroyCount;private int PaintCount

44、;public example4_16()InitCount=0;StartCount=0;StopCount=0;DestroyCount=0;PaintCount=0;public void init()InitCount+;public void destroy()DestroyCount+;public void start()StartCount+;public void stop()StopCount+;public void paint(Graphics g)PaintCount+;g.drawString(Paint()方法执行了方法执行了:+PaintCount+次。次。,2

45、0,20);g.drawString(Init()方法执行了方法执行了:+InitCount+次。次。,20,70);g.drawString(Start()方法执行了方法执行了:+StartCount+次。次。,20,120);g.drawString(Stop()方法执行了方法执行了:+StopCount+次。次。,20,170);g.drawString(Destroy()方法执行方法执行了了:+DestroyCount+次。次。,20,220);4.4.44.4.4JavaappletJavaapplet的运行的运行Java applet程程序序不不能能独独立立运运行行,必必须须由由浏浏览览器器来来运运行行,因因此此我我们们需需编编写写一一个个HTML文文件件,通通过过标标记记将将applet程程序序编编译译生生成成的的字字节节码码文文件件嵌嵌入入HTML文文件件,通知浏览器来运行通知浏览器来运行Java applet。如如 要要 运运 行行 例例 4-16,可可 编编 写写 如如 下下 的的HTML文件:文件:example4_16

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁