《全国二级Jaa考试中的几个难点》由会员分享,可在线阅读,更多相关《全国二级Jaa考试中的几个难点(51页珍藏版)》请在金锄头文库上搜索。
1、 淮海工学院淮海工学院 计算机课程全国二级全国二级Java考试中的几个难点考试中的几个难点1.输入输出流和文件处理输入输出流和文件处理2.Java的多线程机制的多线程机制3.3.AppletApplet类与类与AppletApplet小程序小程序4.Java的异常处理的异常处理 淮海工学院淮海工学院 计算机课程1输入输出流和文件处理输入输出流和文件处理1.1流的概念流的概念流流是指在计算机的输入与输出之间是指在计算机的输入与输出之间运动的数据的运动的数据的序列序列。输入流代表从外设流入计算机的数据序列,。输入流代表从外设流入计算机的数据序列,输出流代表从计算机流向外设的数据序列。输出流代表从计
2、算机流向外设的数据序列。流的最大特点是:流的最大特点是:数据的获取和发送均按数据序数据的获取和发送均按数据序列顺序进行列顺序进行。Java中的流分为两种(被抽象为四个类):中的流分为两种(被抽象为四个类):字节流字节流:InputStream类和类和OutputStream类类字符流字符流:Reader类和类和Writer类类字符流比字节流更有效。字符流比字节流更有效。 淮海工学院淮海工学院 计算机课程1.字字节流流从抽象类从抽象类InputStream和和OutputStream派生出来的派生出来的一系列类,这类流以字节一系列类,这类流以字节(byte)为基本处理单位。为基本处理单位。字节流
3、类字节流类功能功能FileOutputStream写入文件的输出流写入文件的输出流FileInputStream从文件读入的输入流从文件读入的输入流DataOutputStream包含了写包含了写Java标准数据类型的输出流标准数据类型的输出流DataInputStream包含了读取包含了读取Java标准数据类型的输入流标准数据类型的输入流BufferOutputStream缓冲输出流缓冲输出流ByteArrayInputStream从字节数组读取的输入流从字节数组读取的输入流ByteArrayOutputStream写入字节数组的输出流写入字节数组的输出流PrintStream包含最常见的包
4、含最常见的Print()()和和Println()()的输出流的输出流 淮海工学院淮海工学院 计算机课程基本输入流类基本输入流类InputStream的常用方法的常用方法从流中读取数据:从流中读取数据:intread();/读取一个字节,返回值为所读的字节读取一个字节,返回值为所读的字节intread(byteb);读取多个字节,放置到字节数组读取多个字节,放置到字节数组b中,通常读取的字节中,通常读取的字节数量为数量为b的长度,返回值为实际读取的字节的数量的长度,返回值为实际读取的字节的数量intread(byteb,intoff,intlen);读取读取len个字节,放置到以下标个字节,放
5、置到以下标off开始字节数组开始字节数组b中,中,返回值为实际读取的字节的数量返回值为实际读取的字节的数量intavailable();/返回值为流中尚未读取的字节的数量返回值为流中尚未读取的字节的数量longskip(longn);/读指针跳过读指针跳过n个字节不读,返回值个字节不读,返回值为实际跳过的字节数量为实际跳过的字节数量关闭流关闭流:close();/流操作完毕后必须关闭流操作完毕后必须关闭 淮海工学院淮海工学院 计算机课程基本输出流类基本输出流类OutputStream的常用方法的常用方法输出数据:输出数据:voidwrite(intb);/往流中写一个字节往流中写一个字节bvo
6、idwrite(byteb);/往流中写一个字节数组往流中写一个字节数组bvoidwrite(byteb,intoff,intlen);把字节数组把字节数组b中从下标中从下标off开始、长度为开始、长度为len的字节写入流中的字节写入流中flush()/刷空输出流,并输出所有被缓存的字节刷空输出流,并输出所有被缓存的字节由于某些流支持缓存功能,该方法将把缓存中所有由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。内容强制输出到流中。关闭流关闭流:close();/流操作完毕后必须关闭流操作完毕后必须关闭 淮海工学院淮海工学院 计算机课程2字符流字符流从抽象类从抽象类Reader和
7、和Writer派生出的一系列子类,这派生出的一系列子类,这类流以类流以16位的位的Unicode码码表示的字符(一个字符由表示的字符(一个字符由两个字节组成)为基本处理单位。两个字节组成)为基本处理单位。常用字符流子类和功能常用字符流子类和功能InputStreamReader将字节转换为字符的输入流将字节转换为字符的输入流OutputStreamWriter将字节转换为字符的输出流将字节转换为字符的输出流FileReader从文件读入的输入流从文件读入的输入流FileWriter写入文件的输出流写入文件的输出流CharArrayReader从字符数组读取的输入流从字符数组读取的输入流Char
8、ArrayWriter写入字符数组的输出流写入字符数组的输出流StringReader从字符数串读取的输入流从字符数串读取的输入流StringWriter写入字符串的输出流写入字符串的输出流 淮海工学院淮海工学院 计算机课程1.2基本流基本流1.键盘输入和格式化输出键盘输入和格式化输出Java有有3个内置的标准流对象:个内置的标准流对象:1)标准输入流标准输入流System.in:用来读取用户从键盘的输入用来读取用户从键盘的输入2)标准输出流标准输出流System.out:用来在屏幕上显示信息用来在屏幕上显示信息3)标准输出流标准输出流System.err:用来显示出错信息用来显示出错信息(1
9、)键盘输入:)键盘输入:使用使用System.in对象的对象的read()方法()方法例:例:charc=(char)System.in.read();使用使用InputStreamReader、BufferReader流类流类例:例:InputStreamReaderisr=newInputStreamReader(System.in);BufferReaderbr=newBufferReader(isr); 淮海工学院淮海工学院 计算机课程(2)格式化输出)格式化输出用用Java的标准输出的标准输出System.out,可以输出不同类,可以输出不同类型的对象:型的对象:例:例:Inta=2
10、0;System.out.print(a)System.out.println(“大家好大家好”)/加换行加换行用用java.text包中的包中的NumberFormat类可以控制显类可以控制显示格式示格式,有三种方法:,有三种方法:NumberFormat.getNumberInstance()/附加逗号附加逗号NumberFormat.getCurrencyInstance()/货币符号货币符号NumberFormat.getPercentInstance()/百分号百分号 淮海工学院淮海工学院 计算机课程1.3文件类文件类1.Java程序的文件与目录管理程序的文件与目录管理Java.io
11、包中的包中的File类类专门用来管理磁盘文件和目专门用来管理磁盘文件和目录。每个录。每个File类的对象表示一个磁盘文件或目录,类的对象表示一个磁盘文件或目录,对象属性中包含名称、长度、所含文件个数等信对象属性中包含名称、长度、所含文件个数等信息。息。(1)创建)创建File类对象的三种方法:类对象的三种方法:File(Stringpath);指明磁盘文件或目录名及其路径指明磁盘文件或目录名及其路径注意:目录分隔符用注意:目录分隔符用System.dirSep表示表示如:如:Filef1=newFile(“c:”+System.dirSep+”sj”)File(Stringpath,Strin
12、gname);文件或目录的路径文件或目录的路径文件或目录名文件或目录名 淮海工学院淮海工学院 计算机课程File(Filedir,Stringname);(2)获取文件或目录属性)获取文件或目录属性已经存在的磁盘目录已经存在的磁盘目录booleanexists()若文件或目录存在则返回若文件或目录存在则返回truebooleanisFile()若对象代表有效文件则返回若对象代表有效文件则返回truebooleanisDirectory() 若对象代表有效目录则返回若对象代表有效目录则返回trueStringgetName()返回文件名或目录名返回文件名或目录名StringgetPath()返回
13、文件或目录的路径返回文件或目录的路径longlength()返回文件的字节数返回文件的字节数booleancanRead()若文件为可读文件则返回若文件为可读文件则返回truebooleancanWrite()若文件为可写文件则返回若文件为可写文件则返回truebooleanequals(Filef)若两个文件对象相同则返回若两个文件对象相同则返回trueStringlist()将目录中所有文件名存在数组中返回将目录中所有文件名存在数组中返回 淮海工学院淮海工学院 计算机课程(3)文件或目录的操作)文件或目录的操作注意:注意:由于由于JavaApplet程序是从网络上下载到本程序是从网络上下载
14、到本地机器运行的,不可知也不可控,所以地机器运行的,不可知也不可控,所以Java的的安全机制禁止安全机制禁止JavaApplet程序访问和存取本地程序访问和存取本地文件,如果试图在文件,如果试图在JavaApplet程序中使用文件程序中使用文件操作,则将引发操作,则将引发Java的安全性异常。的安全性异常。Boolean renameTo(File newFile)将文件重命名Void delete( )将当前文件删除Boolean mkdir( )创建当前目录的子目录 淮海工学院淮海工学院 计算机课程2.写文本文件写文本文件方法一方法一:用:用FileOutputStream打开文件打开文件
15、my.txt,然后,然后用用PrintStream对象对象p的的println方法把字符串写入方法把字符串写入文件中。文件中。例:例:FileOutputStreamfout=newFileOutputStream(“my.txt”)PrintStreamp=newPrintStream(fout);p.println(“要写入文本文件中的内容要写入文本文件中的内容”);p.close(); 淮海工学院淮海工学院 计算机课程方法二方法二:用用FileWriter打开文件打开文件myf.txt,又创建了,又创建了文本输出流文本输出流out,然后用,然后用out的的print(或者(或者print
16、ln)方法把字符串写入文件方法把字符串写入文件中。中。例:例:FileWriterfw=newFileWriter(“myf.txt”);PrintWriterout=newPrintWriter(fw);out.print(“要写入文本文件中的内容要写入文本文件中的内容”);out.close();/关于输出关于输出fw.close();/关闭文件关闭文件 淮海工学院淮海工学院 计算机课程3.读文本文件读文本文件方法一方法一:用:用FileInputStream打开文件打开文件my.txt,然后建,然后建立立DataInputStream的的对象对象in(文件流),使用(文件流),使用in的
17、的readLine()方法以一行为单位读出()方法以一行为单位读出my.txt文件文件中的所有字符串。中的所有字符串。例:例:FileInputStreamfs=newFileInputStream(“my.txt”)DataInputStreamin=newDataInputStream(fs);while(in.available()!=0)System.out.println(in.readLine();in.close();/关闭输入流关闭输入流 淮海工学院淮海工学院 计算机课程方法二方法二:用:用FileReader打开文件打开文件myf.txt,然后用,然后用BufferedRea
18、der类的对象类的对象br作为文件流,用作为文件流,用br的的readline()读取文件中的字符串。()读取文件中的字符串。例:例:FileReaderfr=newFileReader(“myf.txt”);BufferedReaderbr=newBufferedReader(fr);Stringrecord=newString();IntrecCount=0;While(record=br.readLine()!=null)recCount+;System.out.println(recCount+”:”+record);br.close();/关于缓存关于缓存fr.close();/关闭
19、文件关闭文件 淮海工学院淮海工学院 计算机课程4.程序对文件的随机访问程序对文件的随机访问用用RandomAccessFile类可以实现对文件的随机读写类可以实现对文件的随机读写操作,即可以在文件的任意位置执行数据读写;操作,即可以在文件的任意位置执行数据读写;创建创建RandomAccessFile的对象的对象例例:File mf= new File (“myf.txt”); RandomAccessFile myRAF= new RandomAccessFile(mf, ”rw”);访问模式:访问模式:rw:可读、可写可读、可写r:只读只读作为数据作为数据源的文件源的文件 淮海工学院淮海工
20、学院 计算机课程对文件进行读写操作对文件进行读写操作RandomAccessFile类实现了类实现了DataInput和和DataOutput接口,在读接口,在读/写时具备强大的含类型写时具备强大的含类型转换的输入转换的输入/输出功能;输出功能;RandomAccessFile类的所有方法都有可能抛出类的所有方法都有可能抛出IOException异常,在利用它实现文件操作时需异常,在利用它实现文件操作时需要将相关语句放在要将相关语句放在try块中,并配上块中,并配上catch块来处块来处理异常。理异常。 淮海工学院淮海工学院 计算机课程2Java的多线程机制的多线程机制2.1Java中的线程中
21、的线程1.程序、进程与线程的区别程序、进程与线程的区别线程是比进程更小的执行单位,线程是比进程更小的执行单位,一个进程在执行过程中可以一个进程在执行过程中可以产生多个线程,每个线程有自己的产生、存在、消亡的过程。产生多个线程,每个线程有自己的产生、存在、消亡的过程。线程间可以共享相同的内存单元线程间可以共享相同的内存单元,实现数据交换、实时通信,实现数据交换、实时通信和同步操作。和同步操作。进程是程序的一次动态执行过程进程是程序的一次动态执行过程(放电影),(放电影),对应着代码加载、对应着代码加载、执行到执行完毕的全过程。每一个进程都有自己独立的一块内执行到执行完毕的全过程。每一个进程都有自
22、己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。据和状态都是完全独立的。程序是一段静态的代码,程序是一段静态的代码,是应用软件执行的蓝本是应用软件执行的蓝本(电影胶片)(电影胶片)。 淮海工学院淮海工学院 计算机课程Java的多线程的多线程Java内在支持多线程,内在支持多线程,它的所有类都是在多线程下它的所有类都是在多线程下定义的,定义的,Java利用多线程可以开发能同时处理多个利用多线程可以开发能同时处理多个任务的功能强大的应用程序。任务的功能强大的应用程序。Java程序通过程序通过流控制流控
23、制来执行来执行程序流程序流,程序中单个顺程序中单个顺序的流控制称为线程序的流控制称为线程,多线程则指的是在单个程序多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。在同一时间内同时运行。 淮海工学院淮海工学院 计算机课程使用多线程的好处:使用多线程的好处:使使UI交互的响应更块交互的响应更块充分利用多处理器系统充分利用多处理器系统简化建模简化建模执行异步和后台处理执行异步和后台处理Java中的线程由三部分组成中的线程由三部
24、分组成:1.虚拟的虚拟的CPU,封装在,封装在java.lang.Thread类中类中2.CPU所执行的代码所执行的代码,传递给,传递给Thread类类3.CPU所处理的数据所处理的数据,传递给,传递给Thread类类 淮海工学院淮海工学院 计算机课程Java中的线程多任务示意图中的线程多任务示意图操作系统 共享内存局部变量Java虚拟机应用程序2应用程序1线程1线程2线程3局部变量局部变量 淮海工学院淮海工学院 计算机课程2.2线程的状态与生命周期线程的状态与生命周期新建新建其他阻塞其他阻塞终止终止运行运行等待阻塞等待阻塞对象锁阻塞对象锁阻塞可运行可运行start()sleep()时间到获得
25、锁wait()scheduler()yield()sleep()或join()run()方法结束synchronizednotify()notifyAll()Interrupt() 淮海工学院淮海工学院 计算机课程(1)创建状态)创建状态(newThread)执行下列语句时,线程就处于创建状态:执行下列语句时,线程就处于创建状态:ThreadmyThread=newThread();当一个线程处于创建状态时,它仅仅是一当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。个空的线程对象,系统不为它分配资源。 淮海工学院淮海工学院 计算机课程(2)可运行状态可运行状态(Runn
26、able)ThreadmyThread=newThread();myThread.start();当一个线程处于可运行状态时,系统为这个线程分当一个线程处于可运行状态时,系统为这个线程分配了它需的系统资源,这样该线程处于运行就绪状配了它需的系统资源,这样该线程处于运行就绪状态,系统中可以同时有多个线程处于态,系统中可以同时有多个线程处于Runnable状态。状态。(3)运行状态(运行状态(Running)是线程占有是线程占有CPU并实际运行的状态。并实际运行的状态。 淮海工学院淮海工学院 计算机课程(4)阻塞状态(阻塞状态(Blocked)阻塞状态也称为不可运行状态。因为某种原因(输入阻塞状态
27、也称为不可运行状态。因为某种原因(输入/输输出、等待消息或其它阻塞情况),系统不能执行线程的状出、等待消息或其它阻塞情况),系统不能执行线程的状态。这时即使处理器空闲,也不能执行该线程。态。这时即使处理器空闲,也不能执行该线程。进入不可运行状态的原因有如下几条:进入不可运行状态的原因有如下几条:1)调用了调用了sleep()方法,休眠时间到即进入可运行状()方法,休眠时间到即进入可运行状态态;2)调用了调用了t.join()方法()方法,当当t线程结束或等待时间线程结束或等待时间到即进入可运行状态;到即进入可运行状态;3)为等候一个条件变量,线程调用为等候一个条件变量,线程调用wait()方法
28、()方法;4)输入输出流中发生线程阻塞输入输出流中发生线程阻塞; 淮海工学院淮海工学院 计算机课程线程的终止一般可通过两种方法实现:线程的终止一般可通过两种方法实现:自然撤消自然撤消(线程执行完)(线程执行完)被停止被停止(调用(调用stop()方法)方法)目前不推荐通过调用目前不推荐通过调用stop()来终止线程的执行,来终止线程的执行,而是让线程执行完。而是让线程执行完。(5)死亡状态(死亡状态(Dead)使用线程时要注意线程的同步,可以用使用线程时要注意线程的同步,可以用synchronized来修饰那些不能被中途打扰的方法。来修饰那些不能被中途打扰的方法。 淮海工学院淮海工学院 计算机
29、课程2.3如何在程序中实现多线程如何在程序中实现多线程1.创建用户自定义的一个线程子类创建用户自定义的一个线程子类 即即创建创建Thread类的子类类的子类, 继承线程类继承线程类ThreadThread并重写其并重写其中的方法中的方法 runrun(),(), Thread类综合了类综合了Java程序中一个程序中一个线程需要拥有的属性和方法。线程需要拥有的属性和方法。 由于由于JavaJava只支持单重继承,用这种方法定义的类不能再继承其只支持单重继承,用这种方法定义的类不能再继承其它父类。它父类。关键性操作步骤:关键性操作步骤:(1)定义用户线程的操作,)定义用户线程的操作,即定义用户线程
30、的即定义用户线程的run()方法()方法(2)在适当时候建立用户线程实例。)在适当时候建立用户线程实例。 淮海工学院淮海工学院 计算机课程关于关于Thread类:类:(1)构造函数构造函数publicThread():创建一个系统线程类的对象。:创建一个系统线程类的对象。publicThread(Runnabletarget):在上一个构造函数完在上一个构造函数完成的操作基础之上,利用参数对象成的操作基础之上,利用参数对象实现了实现了Runnable接接口的口的target对象中所定义的对象中所定义的run()方法,来初始化或覆盖新方法,来初始化或覆盖新创建的线程对象的创建的线程对象的run(
31、)方法。方法。publicThread(StringThreadName):在第一个构造函数在第一个构造函数工作的基础上,为所创建的线程对象指定一个字符串名称工作的基础上,为所创建的线程对象指定一个字符串名称供以后使用。供以后使用。publicThread(Runnabletarget,StringThreadName):实实现现,两构造函数的功能。两构造函数的功能。 淮海工学院淮海工学院 计算机课程(2)线程优先级线程优先级Thread类有三个有关线程优先级的静态常量:类有三个有关线程优先级的静态常量:MIN-PRIORITY代表最小优先级,通常为代表最小优先级,通常为1;MAX-PRIOR
32、ITY代表最高优先级,通常为代表最高优先级,通常为10;NORM-PRIORITY代表普通优先级,缺省数值为代表普通优先级,缺省数值为5(3)Thread类的常用方法类的常用方法start()调用该方法启动线程调用该方法启动线程run()线程被调度后执行的动作线程被调度后执行的动作sleep(intmillsecond)让线程放弃让线程放弃CUP资源休眠一段时间资源休眠一段时间isAlive()判断线程是否处于存活状态判断线程是否处于存活状态currentThread()返回当前正在使用返回当前正在使用CUP资源的线程资源的线程interrupt()吵醒处于吵醒处于sleep状态的线程状态的线
33、程 淮海工学院淮海工学院 计算机课程2.在用户自己的类中实现在用户自己的类中实现RunnableRunnable接口接口 即实现即实现RunnableRunnable接口的用户类必须实现其唯一的接口的用户类必须实现其唯一的方法方法runrun()()。一个实现了。一个实现了RunnableRunnable接口的类实际接口的类实际上定义了一个主线程之外的新线程的操作上定义了一个主线程之外的新线程的操作。 实现接口实现接口RunnableRunnable的类仍然可以继承其它父类。的类仍然可以继承其它父类。关键性操作步骤:关键性操作步骤:定义定义run()方法的具体内容()方法的具体内容当用户程序需
34、要建立新线程时,只要当用户程序需要建立新线程时,只要以这个以这个实现了实现了run()方法的()方法的类为参数创建系统类类为参数创建系统类thread的对象的对象,就,就可以把用户实现的可以把用户实现的run()方法继承过来。()方法继承过来。 淮海工学院淮海工学院 计算机课程关于关于Runnable接口:接口: Runnable接口接口只有一个方法只有一个方法run(),所有实现,所有实现Runnable接口的用户类都必须具体实现这个接口的用户类都必须具体实现这个run()方法,为它书写方法体并定义具体操作。方法,为它书写方法体并定义具体操作。Runnable接口中的这个接口中的这个run(
35、)方法是一个较特殊方法是一个较特殊的方法,它可以被运行系统自动识别和执行。当线的方法,它可以被运行系统自动识别和执行。当线程被调度并转入运行状态时,它所执行的就是程被调度并转入运行状态时,它所执行的就是run()方法中规定的操作。方法中规定的操作。 淮海工学院淮海工学院 计算机课程实现多线程的两种方法的比较:实现多线程的两种方法的比较:1.使用使用Runnable接口接口1)可以将可以将CPU、代码和数据分开,形成清晰、代码和数据分开,形成清晰的模型的模型;2)还可以从其他类继承还可以从其他类继承;3)保持程序风格的一致性。保持程序风格的一致性。2.直接继承直接继承Thread类类1)不能再从
36、其他类继承不能再从其他类继承;2)编写简单,可以直接操纵线程,无需使用编写简单,可以直接操纵线程,无需使用Thread.currentThread()。 淮海工学院淮海工学院 计算机课程3 Applet3 Applet类与类与AppletApplet小程序小程序3.1 Applet3.1 Applet的基本工作原理的基本工作原理 Java AppletJava Applet是通过兼容是通过兼容JavaJava的的InternetInternet浏览器来解释执浏览器来解释执行的。行的。 编译好的编译好的JavaJava字节码文件保存在特定的字节码文件保存在特定的WWWWWW服务器上,当服务器上,
37、当浏览器遇到网页中嵌入的浏览器遇到网页中嵌入的标记时,就会根据该标记时,就会根据该AppletApplet的名字和位置自动把字节码从服务器上下载到本地,的名字和位置自动把字节码从服务器上下载到本地,并利用浏览器本身拥有的并利用浏览器本身拥有的JavaJava解释器直接执行该字节码。解释器直接执行该字节码。 由于有浏览器的支持,由于有浏览器的支持,AppletApplet不需要建立自己的主流程框不需要建立自己的主流程框架,也不需要有专门的图形界面。架,也不需要有专门的图形界面。AppletApplet需要做的是接收和需要做的是接收和响应浏览器发来的消息或事件。响应浏览器发来的消息或事件。 淮海工
38、学院淮海工学院 计算机课程3.2Applet类类(1)Applet类简介类简介它是它是JavaJava类库中一个重要的系统类,存在于类库中一个重要的系统类,存在于java.appletjava.applet包中。包中。AppletApplet类是类是JavaJava的系统类的系统类java. Awt.Paneljava. Awt.Panel的子类的子类。 PanelPanel属于一种容器,作用是:属于一种容器,作用是: 包容和排列其他的界面元素,如按钮、对话框等包容和排列其他的界面元素,如按钮、对话框等 响应它所包容范围之内的事件,或把事件向更高层次传递。响应它所包容范围之内的事件,或把事件向
39、更高层次传递。 AppletApplet在此基础上,还具有一些与浏览器和在此基础上,还具有一些与浏览器和AppletApplet生生命周期有关的专门方法。命周期有关的专门方法。 淮海工学院淮海工学院 计算机课程(2)Applet类的主要方法类的主要方法1 1)initinit()方法()方法 用来完成主类实例的初始化工作。如:创建和初始化程用来完成主类实例的初始化工作。如:创建和初始化程序运行所需要的对象实例,把图形或字体加载入内存,设置序运行所需要的对象实例,把图形或字体加载入内存,设置各种参数,加载图形和声音并播放等。各种参数,加载图形和声音并播放等。2 2)startstart()方法(
40、)方法 用来启动浏览器运行用来启动浏览器运行AppletApplet的主线程。浏览器在调用的主线程。浏览器在调用initinit()方法初始化()方法初始化AppletApplet类的实例之后,接着会自动调用类的实例之后,接着会自动调用startstart()方法,除此之外,()方法,除此之外,startstart()方法在()方法在AppletApplet被重新启动被重新启动时也会被系统自动调用。时也会被系统自动调用。3 3)stopstop()方法()方法 类似于类似于startstart()方法的逆操作,当用户浏览其它页面,()方法的逆操作,当用户浏览其它页面,或切换到其他系统应用时,浏
41、览器将自动调用或切换到其他系统应用时,浏览器将自动调用stopstop()方法()方法暂停执行暂停执行AppletApplet的主线程。的主线程。 淮海工学院淮海工学院 计算机课程4 4)paintpaint()方法()方法 主要用来在主要用来在AppletApplet的界面中显示文字、图形和其他界面元的界面中显示文字、图形和其他界面元素,也是浏览器自动调用的方法。导致浏览器调用素,也是浏览器自动调用的方法。导致浏览器调用paintpaint()()方法的事件主要有三种:方法的事件主要有三种:AppletApplet被启动后,自动调用被启动后,自动调用paintpaint()来重新描绘自己的界
42、面;()来重新描绘自己的界面; AppletApplet所在的浏览器窗口改变时,要求自动调用所在的浏览器窗口改变时,要求自动调用paintpaint()()来重画界面;来重画界面; AppletApplet的其他方法被调用时,系统也会调用此方法的其他方法被调用时,系统也会调用此方法。 paintpaint()方法有一个固定的参数()方法有一个固定的参数GraphicsGraphics类的对象类的对象g g。 GraphicsGraphics类是用来完成一些较低级的图形用户界面操作的类,类是用来完成一些较低级的图形用户界面操作的类,其中包括画圆、点、线、多边形及显示简单文本。其中包括画圆、点、线
43、、多边形及显示简单文本。 淮海工学院淮海工学院 计算机课程5)destroy()方法()方法当用户退出浏览器时,浏览器自动调用当用户退出浏览器时,浏览器自动调用Applet实例的实例的destroy()方法完成释放资源、关闭连接之类的操作。()方法完成释放资源、关闭连接之类的操作。Applet的生命周期与主要方法的生命周期与主要方法destroy()消亡消亡init()初始化()初始化start()启动()启动stop()中止()中止下载并下载并实例化实例化Applet启动启动Applet退出浏览器退出浏览器Applet转入后台转入后台重新激活重新激活Applet 淮海工学院淮海工学院 计算机
44、课程3.3HTML文件参数传递文件参数传递 Applet Applet通过标记通过标记 嵌入在嵌入在HTMLHTML文件中,文件中, 至少需要包括三个参数:至少需要包括三个参数:codecode、heightheight、widthwidth。其它可选参数如下:其它可选参数如下:(1 1)codebasecodebase 当当AppletApplet字节码文件的保存位置与所嵌入的字节码文件的保存位置与所嵌入的HTMLHTML文档不文档不同时,需要用此参数指明字节码文件的位置,该位置用同时,需要用此参数指明字节码文件的位置,该位置用URLURL格式表示。格式表示。(2 2)altalt 如果浏览
45、器不包含如果浏览器不包含JavaJava解释器,则不能执行字节码文件,解释器,则不能执行字节码文件,此时可用此时可用altalt参数告诉用户此浏览器不支持参数告诉用户此浏览器不支持JavaJava。(3 3)alignalign 表示表示AppletApplet界面区域在浏览器窗口中的对齐方式。界面区域在浏览器窗口中的对齐方式。 淮海工学院淮海工学院 计算机课程 HTML HTML文件可以通过标记文件可以通过标记向它所嵌入的向它所嵌入的AppletApplet传递参数,传递参数,使使AppletApplet的运行更加灵活。的运行更加灵活。 格式为:格式为: PARAM name= 标记只能传递
46、一个字符串类型的参数。标记只能传递一个字符串类型的参数。 AppletApplet利用利用getParamtergetParamter()方法来获取()方法来获取HTMLHTML传递来的参数,传递来的参数,方法中用方法中用namename指定的参数名。指定的参数名。 格式:格式: getParamtergetParamter(” x x ”) 淮海工学院淮海工学院 计算机课程4Java的异常处理的异常处理4.1 4.1 编程中的错误编程中的错误 编程中的错误分为编程中的错误分为编译错误编译错误和和运行错误运行错误。 编译错误:编译错误: 程序由于语法的原因无法通过由源代码到目标码的编译而产程序
47、由于语法的原因无法通过由源代码到目标码的编译而产生的错误。生的错误。运行错误:运行错误:系统错误系统错误:引发操作系统问题的错误,:引发操作系统问题的错误,如死循环、死机如死循环、死机;逻辑错误:逻辑错误:无法实现设计意图和功能的错误,无法实现设计意图和功能的错误,如算法考虑如算法考虑不周、边界条件不正确不周、边界条件不正确。 淮海工学院淮海工学院 计算机课程4.2 4.2 异常与异常类异常与异常类(1 1) Java Java 的异常处理机制的异常处理机制 异常是特殊的错误运行对象,又称例外,对应着异常是特殊的错误运行对象,又称例外,对应着JavaJava语言特定的运行错误处理机制。语言特定
48、的运行错误处理机制。 为了能够及时有效地处理程序中的运行错误,为了能够及时有效地处理程序中的运行错误,JavaJava引入了引入了异常异常和和异常类异常类。异常异常是是异常类异常类的对象的对象。一旦一个异常对象产生了,系统中就一定有相应的机一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其它对操制来处理它,确保不会产生死机、死循环或其它对操作系统的损害,保证整个程序运行的安全性。作系统的损害,保证整个程序运行的安全性。 淮海工学院淮海工学院 计算机课程 (2 2)异常类结构与组成)异常类结构与组成 每一种类对应一种特定的错误;异常类都是系统每一种类对应一种特
49、定的错误;异常类都是系统ExceptionException类的子类类的子类. . Throwable类类Exception类类Error类类IOExceptionRuntimeExceptionInterruptedExceptionClassNotFoundExceptionIllegalAccessExceptionAWTException 淮海工学院淮海工学院 计算机课程ThrowableThrowable类是类库类是类库java.langjava.lang包中的一个类包中的一个类,派生两个子类:,派生两个子类:ExceptionException和和ErrorErrorExcepti
50、onException类有两个构造函数:类有两个构造函数: public Exception()public Exception();public Exception(String s);public Exception(String s);其中其中s s是对该例外所对应的错误的描述。是对该例外所对应的错误的描述。从父类从父类ThrowableThrowable继承的常用方法:继承的常用方法:1 1) public String toString();public String toString(); 该方法返回描述当前该方法返回描述当前ExceptionException类信息的字符串。类信
51、息的字符串。2 2) public void printStackTrace();public void printStackTrace(); 该方法的功能是完成一个打印操作,在屏幕上输出当前例该方法的功能是完成一个打印操作,在屏幕上输出当前例外对象的堆栈使用轨迹,即程序先后调用了哪些对象或类外对象的堆栈使用轨迹,即程序先后调用了哪些对象或类的方法,使得运行过程中产生了这个例外对象。的方法,使得运行过程中产生了这个例外对象。 淮海工学院淮海工学院 计算机课程(3)系)系统定定义的运行异常与所的运行异常与所对应的系的系统运行运行错误系统定义的运行异常异常对应的系统运行错误ClassNotFoun
52、dException未找到欲装载使用的类ArrayIndexOutOfBoundsException数组越界使用FileNotFoundException未找到指定的文件或目录IOException输入、输出错误ArithmeticException算术错误,如除数为0SecurityException安全性错误,如Applet欲读写文件MalformedURLExceptionURL格式错误 淮海工学院淮海工学院 计算机课程(4)用)用户自定自定义的异常的异常 作用作用:用来:用来处理处理程序中特定的程序中特定的逻辑运行错误逻辑运行错误。 创建用户自定义异常时,一般需要完成如下工作:创建用户
53、自定义异常时,一般需要完成如下工作:(1 1)声明一个新的异常类,使之以)声明一个新的异常类,使之以ExceptionException类或其他某个类或其他某个已经存在的系统异常类或用户异常类为父类;已经存在的系统异常类或用户异常类为父类;(2 2)为新的异常类定义属性和方法,或重载父类的属性和方)为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法能够体现该类所对应的错误的信息。法,使这些属性和方法能够体现该类所对应的错误的信息。 定义足够多的异常类是构建一个稳定完善的应用系统的重定义足够多的异常类是构建一个稳定完善的应用系统的重要基础之一。要基础之一。 淮海工学院淮海工学院
54、 计算机课程4.3异常的抛出异常的抛出 Java Java程序在运行时如果由于可识别的错误,系统就产生程序在运行时如果由于可识别的错误,系统就产生一个与该错误相对应的异常类的对象,这个过程就是异常一个与该错误相对应的异常类的对象,这个过程就是异常的抛出。的抛出。(1 1)系统自动抛出的异常)系统自动抛出的异常 所有系统定义的运行异常都可以由系统自动抛出。所有系统定义的运行异常都可以由系统自动抛出。例:例:public class TestSystemExceptionpublic class TestSystemException public static void main(String
55、args) public static void main(String args) int a=0,b=5; int a=0,b=5; System.out.println(b/a); System.out.println(b/a); /以零为除数,引发系统以零为除数,引发系统定义的算术异常定义的算术异常 淮海工学院淮海工学院 计算机课程(2 2)语句抛出的异常)语句抛出的异常 用户程序定义的异常不可能靠系统自动抛出,必用户程序定义的异常不可能靠系统自动抛出,必须借助须借助throwthrow语句定义何种情况才算产生了此种异语句定义何种情况才算产生了此种异常对应的错误,并抛出这个异常类的新对
56、象。常对应的错误,并抛出这个异常类的新对象。语法:语法: 修饰符修饰符 返回类型返回类型 方法名(参数列表)方法名(参数列表) throws throws 异异常类名列表常类名列表 . . throwthrow 异常类名异常类名; ; . . 对有可能出现异常的方法,用对有可能出现异常的方法,用throwsthrows语句列出可语句列出可能出现的异常类名,这样当发生异常时,系统就调能出现的异常类名,这样当发生异常时,系统就调用异常处理程序。用异常处理程序。 淮海工学院淮海工学院 计算机课程注意的问题:(1 1)一般这种抛出异常的语句应该被定义为在满足一定)一般这种抛出异常的语句应该被定义为在满
57、足一定条件时执行,如在条件时执行,如在ifif语句的条件分支中。语句的条件分支中。(2 2)含有)含有throwthrow语句的方法,应该在方法头定义中增加如语句的方法,应该在方法头定义中增加如下的部分:下的部分: throws throws 异常类名列表异常类名列表(3 3)由于系统不能识别和创建用户自定义的异常,所以)由于系统不能识别和创建用户自定义的异常,所以需要编程者在程序中的合适位置创建自定义异常的对需要编程者在程序中的合适位置创建自定义异常的对象,并利用象,并利用throwthrow语句将这个新异常对象抛出。语句将这个新异常对象抛出。 淮海工学院淮海工学院 计算机课程4.4异常的异
58、常的处理理 包括包括捕捉异常捕捉异常、程序流程的跳转程序流程的跳转和和异常处理语异常处理语句块的定义句块的定义。(1 1)捕捉异常)捕捉异常 异常被抛出时,用专门的语句来接收异常对象,格式如异常被抛出时,用专门的语句来接收异常对象,格式如下:下:catchcatch(异常类名(异常类名 异常形式参数名)异常形式参数名) 异常处理语句;异常处理语句; 淮海工学院淮海工学院 计算机课程Java语言规定:语言规定:每个每个catch语句块都应该与一个语句块都应该与一个try语句块相对语句块相对应应,这个,这个try语句块用来启动语句块用来启动Java的异常处理机的异常处理机制,可能抛出异常的语句(包
59、括制,可能抛出异常的语句(包括throw语句、调语句、调用可能抛出异常方法的方法调用语句)都应该用可能抛出异常方法的方法调用语句)都应该包含在这个包含在这个try语句块中。语句块中。 淮海工学院淮海工学院 计算机课程(2 2)多异常处理)多异常处理 通过一个通过一个trytry块后面定义若干个块后面定义若干个catchcatch块来实现,每块来实现,每个个catchcatch块用来接收和处理一种特定的异常对象。块用来接收和处理一种特定的异常对象。注意如下问题:注意如下问题:1 1)catchcatch块中的语句应根据异常的不同执行不同的块中的语句应根据异常的不同执行不同的操作;操作;2 2)处理多异常时应注意设计各)处理多异常时应注意设计各catchcatch块的排列顺序,块的排列顺序,一般处理较具体和常见的异常应放在前,可以与一般处理较具体和常见的异常应放在前,可以与多种异常相匹配的应放在后;多种异常相匹配的应放在后;否则可能造成它后否则可能造成它后面的面的catchcatch块将永远不被使用。块将永远不被使用。