




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院 计算机课程 全国二级Java考试中的几个难点 1. 输入输出流和文件处理 2. Java的多线程机制 3.Applet类与Applet小程序 4. Java的异常处理 淮海工学院 计算机课程 1 输入输出流和文件处理 1. 1 流的概念 流是指在计算机的输入与输出之间运动的数据的 序列。输入流代表从外设流入计算机的数据序列 ,输出流代表从计算机流向外设的数据序列。 流的最大特点是:数据的获取和发送均按数据序 列顺序进行。 Java中的流分为两种(被抽象为四个类): 字节流: InputStream类和OutputStream类 字符流: Reader类和 Writer类 字符流比字节流更有效。 淮海工学院 计算机课程 1. 字节节流 从抽象类InputStream和OutputStream派生出来的 一系列类,这类流以字节(byte)为基本处理单位。 字节流类功能 FileOutputStream写入文件的输出流 FileInputStream从文件读入的输入流 DataOutputStream包含了写Java标准数据类型的输出流 DataInputStream包含了读取Java标准数据类型的输入流 BufferOutputStream 缓冲输出流 ByteArrayInputStream 从字节数组读取的输入流 ByteArrayOutputStream 写入字节数组的输出流 PrintStream 包含最常见的Print()和Println ()的输出流 淮海工学院 计算机课程 基本输入流类InputStream的常用方法 从流中读取数据: int read( ); /读取一个字节,返回值为所读的字节 int read( byte b ); 读取多个字节,放置到字节数组b中,通常读取的字节 数量为b的长度,返回值为实际读取的字节的数量 int read( byte b , int off, int len ); 读取len个字节,放置到以下标off开始字节数组b中, 返回值为实际读取的字节的数量 int available( ); /返回值为流中尚未读取的字节的数量 long skip( long n ); /读指针跳过n个字节不读,返回值 为实际跳过的字节数量 关闭流: close( ); /流操作完毕后必须关闭 淮海工学院 计算机课程 基本输出流类OutputStream 的常用方法 输出数据: void write( int b ); /往流中写一个字节b void write( byte b ); /往流中写一个字节数组b void write( byte b , int off, int len ); 把字节数组b中从下标off开始、长度为len的字节写入流中 flush( ) /刷空输出流,并输出所有被缓存的字节 由于某些流支持缓存功能,该方法将把缓存中所有 内容强制输出到流中。 关闭流: close( ); /流操作完毕后必须关闭 淮海工学院 计算机课程 2 字符流 从抽象类Reader和Writer派生出的一系列子类,这 类流以16位的Unicode码表示的字符(一个字符由 两个字节组成)为基本处理单位。 常用字符流子类和功能 InputStreamReader 将字节转换为字符的输入流 OutputStreamWriter 将字节转换为字符的输出流 FileReader 从文件读入的输入流 FileWriter 写入文件的输出流 CharArrayReader 从字符数组读取的输入流 CharArrayWriter 写入字符数组的输出流 StringReader 从字符数串读取的输入流 StringWriter 写入字符串的输出流 淮海工学院 计算机课程 1.2 基本流 1. 键盘输入和格式化输出 Java有3个内置的标准流对象: 1)标准输入流System.in: 用来读取用户从键盘的输入 2)标准输出流System.out: 用来在屏幕上显示信息 3)标准输出流System.err: 用来显示出错信息 (1)键盘输入: 使用System.in对象的read()方法 例: char c=(char)System.in.read( ); 使用InputStreamReader 、BufferReader流类 例: InputStreamReader isr=new InputStreamReader(System.in); BufferReader br=new BufferReader(isr); 淮海工学院 计算机课程 (2)格式化输出 用Java的标准输出System.out,可以输出不同类 型的对象: 例:Int a=20; System.out .print(a) System.out .println(“大家好”) /加换行 用java.text包中的NumberFormat类可以控制显 示格式,有三种方法: NumberFormat.getNumberInstance( ) /附加逗号 NumberFormat.getCurrencyInstance( ) /货币符号 NumberFormat.getPercentInstance( ) /百分号 淮海工学院 计算机课程 1.3 文件类 1. Java程序的文件与目录管理 Java.io包中的File类专门用来管理磁盘文件和目 录。每个File类的对象表示一个磁盘文件或目录 ,对象属性中包含名称、长度、所含文件个数等 信息。 (1)创建File类对象的三种方法: File(String path); 指明磁盘文件或目录名及其路径 注意:目录分隔符用System.dirSep表示 如:File f1=new File(“c:”+ System.dirSep+”sj”) File(String path, String name); 文件或目录的路径文件或目录名 淮海工学院 计算机课程 File(File dir, String name); (2)获取文件或目录属性 已经存在的磁盘目录 boolean exists( )若文件或目录存在则返回true boolean isFile( )若对象代表有效文件则返回true boolean isDirectory( ) 若对象代表有效目录则返回true String getName( )返回文件名或目录名 String getPath( )返回文件或目录的路径 long length( )返回文件的字节数 boolean canRead( )若文件为可读文件则返回true boolean canWrite( )若文件为可写文件则返回true boolean equals(File f ) 若两个文件对象相同则返回true String list( )将目录中所有文件名存在数组中返回 淮海工学院 计算机课程 (3)文件或目录的操作 注意:由于Java Applet程序是从网络上下载到本 地机器运行的,不可知也不可控,所以Java的 安全机制禁止Java Applet程序访问和存取本地 文件,如果试图在Java Applet程序中使用文件 操作,则将引发Java的安全性异常。 Boolean renameTo(File newFile)将文件重命名 Void delete( )将当前文件删除 Boolean mkdir( )创建当前目录的子目录 文件操作例子 淮海工学院 计算机课程 2. 写文本文件 方法一:用FileOutputStream打开文件my.txt,然后 用PrintStream 对象p的println方法把字符串写入 文件中。 例: FileOutputStream fout=new FileOutputStream(“my.txt”) PrintStream p=new PrintStream(fout); p.println(“要写入文本文件中的内容”); p.close(); 写文本例子1 淮海工学院 计算机课程 方法二:用FileWriter打开文件myf.txt,又创建 了文本输出流out,然后用out 的print(或者 println)方法把字符串写入文件中。 例: FileWriter fw= new FileWriter(“myf.txt”); PrintWriter out=new PrintWriter(fw); out.print(“要写入文本文件中的内容”); out.close(); /关于输出 fw.close(); /关闭文件写文本例子2 淮海工学院 计算机课程 3. 读文本文件 方法一:用FileInputStream打开文件my.txt,然后 建立DataInputStream的 对象in(文件流),使用 in的readLine()方法以一行为单位读出my.txt文 件中的所有字符串。 例: FileInputStream fs=new FileInputStream(“my.txt”) DataInputStream in=new DataInputStream(fs); while(in.available( )!=0) System.out.println( in.readLine() ); in.close(); /关闭输入流 读文本例子1 淮海工学院 计算机课程 方法二:用FileReader打开文件myf.txt,然后用 BufferedReader类的对象br作为文件流,用br 的 readline()读取文件中的字符串。 例: FileReader fr= new FileReader (“myf.txt”); BufferedReader br=new BufferedReader(fr); String record=new String( ); Int recCount=0; While (record=br.readLine()!=null) recCount+; System.out.println(recCount+”:”+ record); br.close(); /关于缓存 fr.close(); /关闭文件 读文本例子2 淮海工学院 计算机课程 4. 程序对文件的随机访问 用RandomAccessFile类可以实现对文件的随机读写 操作,即可以在文件的任意位置执行数据读写; 创建RandomAccessFile的对象 例:File mf= new File (“myf.txt”); RandomAccessFile myRAF= new RandomAccessFile (mf, ”rw”); 访问模式: rw: 可读、可写 r: 只读 作为数据 源的文件 淮海工学院 计算机课程 对文件进行读写操作 RandomAccessFile类实现了DataInput和 DataOutput接口,在读/写时具备强大的含类型 转换的输入/输出功能; RandomAccessFile类的所有方法都有可能抛出 IOException异常,在利用它实现文件操作时需 要将相关语句放在try块中,并配上catch块来处 理异常。 文件访问例子 淮海工学院 计算机课程 2 Java的多线程机制 2.1 Java中的线程 1. 程序、进程与线程的区别 线程是比进程更小的执行单位,一个进程在执行过程中可以 产生多个线程,每个线程有自己的产生、存在、消亡的过程。 线程间可以共享相同的内存单元,实现数据交换、实时通信 和同步操作。 进程是程序的一次动态执行过程(放电影),对应着代码加载、 执行到执行完毕的全过程。每一个进程都有自己独立的一块内 存空间、一组系统资源。在进程概念中,每一个进程的内部数 据和状态都是完全独立的。 程序是一段静态的代码,是应用软件执行的蓝本(电影胶片)。 淮海工学院 计算机课程 Java的多线程 Java内在支持多线程,它的所有类都是在多线程下 定义的,Java利用多线程可以开发能同时处理多个 任务的功能强大的应用程序。 Java程序通过流控制来执行程序流,程序中单个顺 序的流控制称为线程,多线程则指的是在单个程序 中可以同时运行多个不同的线程,执行不同的任务 。多线程意味着一个程序的多行语句可以看上去几 乎在同一时间内同时运行。 淮海工学院 计算机课程 使用多线程的好处: 使UI交互的响应更块 充分利用多处理器系统 简化建模 执行异步和后台处理 Java中的线程由三部分组成: 1. 虚拟的CPU,封装在java.lang.Thread类中 2. CPU所执行的代码,传递给Thread类 3. CPU所处理的数据,传递给Thread类 淮海工学院 计算机课程 Java中的线程多任务示意图 操作系统 共享内存 局部变量 Java虚拟机 应用程序2 应用程序1 线程1 线程2 线程3 局部变量 局部变量 淮海工学院 计算机课程 2.2 线程的状态与生命周期 新建 其他阻塞 终止 运行 等待阻塞 对象锁阻塞 可运行 start() sleep()时 间到 获得锁 wait() scheduler() yield() sleep()或join() run()方法结束 synchronized notify() notifyAll() Interrupt() 淮海工学院 计算机课程 (1)创建状态(new Thread) 执行下列语句时,线程就处于创建状态 : Thread myThread = new Thread ( ); 当一个线程处于创建状态时,它仅仅是一 个空的线程对象,系统不为它分配资源。 淮海工学院 计算机课程 (2) 可运行状态( Runnable ) Thread myThread = new Thread ( ); myThread.start( ); 当一个线程处于可运行状态时,系统为这个线程分 配了它需的系统资源,这样该线程处于运行就绪状 态,系统中可以同时有多个线程处于Runnable 状态 。 (3) 运行状态(Running) 是线程占有CPU并实际运行的状态。 淮海工学院 计算机课程 ( 4) 阻塞状态(Blocked) 阻塞状态也称为不可运行状态。因为某种原因(输入/输 出、等待消息或其它阻塞情况),系统不能执行线程的状 态。这时即使处理器空闲,也不能执行该线程。 进入不可运行状态的原因有如下几条: 1) 调用了sleep()方法,休眠时间到即进入可运行状 态; 2) 调用了t.join()方法,当t线程结束或等待时间 到即进入可运行状态; 3) 为等候一个条件变量,线程调用wait()方法; 4) 输入输出流中发生线程阻塞; 淮海工学院 计算机课程 线程的终止一般可通过两种方法实现: 自然撤消(线程执行完) 被停止(调用stop( )方法) 目前不推荐通过调用stop()来终止线程的执行 ,而是让线程执行完。 (5) 死亡状态(Dead) 使用线程时要注意线程的同步,可以用synchronized 来修饰那些不能被中途打扰的方法。 淮海工学院 计算机课程 2.3 如何在程序中实现多线程 1. 创建用户自定义的一个线程子类 即创建Thread类的子类, 继承线程类Thread并重写其 中的方法 run(), Thread类综合了Java程序中一个 线程需要拥有的属性和方法。 由于Java只支持单重继承,用这种方法定义的类不能再继承其 它父类。 关键性操作步骤: (1)定义用户线程的操作,即定义用户线程的 run()方法 (2)在适当时候建立用户线程实例。 淮海工学院 计算机课程 关于Thread类: (1) 构造函数 public Thread ( ):创建一个系统线程类的对象。 public Thread ( Runnable target ): 在上一个构造函数完 成的操作基础之上,利用参数对象实现了Runnable接 口的target对象中所定义的run( )方法,来初始化或覆盖新 创建的线程对象的run( )方法。 public Thread ( String ThreadName ): 在第一个构造函数 工作的基础上,为所创建的线程对象指定一个字符串名称 供以后使用。 public Thread (Runnable target, String ThreadName): 实 现,两构造函数的功能。 淮海工学院 计算机课程 (2) 线程优先级 Thread类有三个有关线程优先级的静态常量: MIN-PRIORITY 代表最小优先级,通常为1; MAX-PRIORITY 代表最高优先级,通常为10; NORM-PRIORITY 代表普通优先级,缺省数值为5 (3) Thread类的常用方法 start( ) 调用该方法启动线程 run( ) 线程被调度后执行的动作 sleep(int millsecond) 让线程放弃CUP资源休眠一段时间 isAlive( ) 判断线程是否处于存活状态 currentThread( ) 返回当前正在使用CUP资源的线程 interrupt( ) 吵醒处于sleep状态的线程 淮海工学院 计算机课程 2. 在用户自己的类中实现Runnable接口 即实现Runnable接口的用户类必须实现其唯一的 方法run()。一个实现了Runnable接口的类实际 上定义了一个主线程之外的新线程的操作。 实现接口Runnable的类仍然可以继承其它父类。 关键性操作步骤: 定义run()方法的具体内容 当用户程序需要建立新线程时,只要以这个实现了 run()方法的类为参数创建系统类thread的对象 ,就可以把用户实现的run()方法继承过来。 淮海工学院 计算机课程 关于Runnable接口: Runnable接口只有一个方法run( ),所有实现 Runnable接口的用户类都必须具体实现这个run( ) 方法,为它书写方法体并定义具体操作。 Runnable接口中的这个run( )方法是一个较特殊 的方法,它可以被运行系统自动识别和执行。当线 程被调度并转入运行状态时,它所执行的就是run( ) 方法中规定的操作。 Runnable例子 淮海工学院 计算机课程 实现多线程的两种方法的比较: 1. 使用Runnable接口 1) 可以将CPU、代码和数据分开,形成清晰 的模型; 2) 还可以从其他类继承; 3) 保持程序风格的一致性。 2. 直接继承Thread类 1) 不能再从其他类继承; 2) 编写简单,可以直接操纵线程,无需使用 Thread.currentThread( )。 淮海工学院 计算机课程 3 Applet类与Applet小程序 3.1 Applet的基本工作原理 Java Applet是通过兼容Java的Internet浏览器来解释执 行的。 编译好的Java字节码文件保存在特定的WWW服务器上,当 浏览器遇到网页中嵌入的标记时,就会根据该 Applet的名字和位置自动把字节码从服务器上下载到本地, 并利用浏览器本身拥有的Java解释器直接执行该字节码。 由于有浏览器的支持,Applet不需要建立自己的主流程框 架,也不需要有专门的图形界面。Applet需要做的是接收和 响应浏览器发来的消息或事件。 淮海工学院 计算机课程 3.2 Applet类 (1)Applet类简介 它是Java类库中一个重要的系统类,存在于java.applet 包中。Applet类是Java的系统类java. Awt.Panel的子类。 Panel属于一种容器,作用是: 包容和排列其他的界面元素,如按钮、对话框等 响应它所包容范围之内的事件,或把事件向更高层次传递 。 Applet在此基础上,还具有一些与浏览器和Applet生 命周期有关的专门方法。 淮海工学院 计算机课程 (2)Applet类的主要方法 1)init()方法 用来完成主类实例的初始化工作。如:创建和初始化程 序运行所需要的对象实例,把图形或字体加载入内存,设置 各种参数,加载图形和声音并播放等。 2)start()方法 用来启动浏览器运行Applet的主线程。浏览器在调用init ()方法初始化Applet类的实例之后,接着会自动调用 start()方法,除此之外,start()方法在Applet被重新 启动时也会被系统自动调用。 3)stop()方法 类似于start()方法的逆操作,当用户浏览其它页面, 或切换到其他系统应用时,浏览器将自动调用stop()方法 暂停执行Applet的主线程。 淮海工学院 计算机课程 4)paint()方法 主要用来在Applet的界面中显示文字、图形和其他界面元 素,也是浏览器自动调用的方法。导致浏览器调用paint() 方法的事件主要有三种: Applet被启动后,自动调用paint()来重新描绘自己的界面 ; Applet所在的浏览器窗口改变时,要求自动调用paint() 来重画界面; Applet的其他方法被调用时,系统也会调用此方法。 paint()方法有一个固定的参数Graphics类的对象g 。 Graphics类是用来完成一些较低级的图形用户界面操作的 类,其中包括画圆、点、线、多边形及显示简单文本。 淮海工学院 计算机课程 5)destroy()方法 当用户退出浏览器时,浏览器自动调用Applet 实例的 destroy()方法完成释放资源、关闭连接之类的操作。 Applet的生命周期与主要方法 destroy( )消亡 init()初始化start()启动 stop()中止 下载并 实例化 Applet 启动Applet 退出浏览器 Applet转入后台 重新激活 Applet 淮海工学院 计算机课程 3.3 HTML文件参数传递 Applet通过标记 嵌入在HTML文件中, 至少需要包括三个参数:code、height、width。 其它可选参数如下: (1)codebase 当Applet字节码文件的保存位置与所嵌入的HTML文档不 同时,需要用此参数指明字节码文件的位置,该位置用URL 格式表示。 (2)alt 如果浏览器不包含Java解释器,则不能执行字节码文件 ,此时可用alt参数告诉用户此浏览器不支持Java。 (3)align 表示Applet界面区域在浏览器窗口中的对齐方式。 淮海工学院 计算机课程 HTML文件可以通过标记向它所嵌入的Applet传递参数 ,使Applet的运行更加灵活。 格式为: 标记只能传递一个字符串类型的参数。 Applet利用getParamter()方法来获取HTML传递来的参数 ,方法中用name指定的参数名。 格式: getParamter(” x ”) 淮海工学院 计算机课程 4 Java的异常处理 4.1 编程中的错误 编程中的错误分为编译错误和运行错误。 编译错误: 程序由于语法的原因无法通过由源代码到目标码的编译而产 生的错误。 运行错误: 系统错误:引发操作系统问题的错误,如死循环、死机; 逻辑错误:无法实现设计意图和功能的错误,如算法考虑 不周、边界条件不正确。 淮海工学院 计算机课程 4.2 异常与异常类 (1) Java 的异常处理机制 异常是特殊的错误运行对象,又称例外,对应着 Java语言特定的运行错误处理机制。 为了能够及时有效地处理程序中的运行错误,Java 引入了异常和异常类。异常是异常类的对象。 一旦一个异常对象产生了,系统中就一定有相应的机 制来处理它,确保不会产生死机、死循环或其它对操 作系统的损害,保证整个程序运行的安全性。 淮海工学院 计算机课程 (2)异常类结构与组成 每一种类对应一种特定的错误;异常类都是系统Exception 类的子类. Throwable类 Exception类 Error类 IOException RuntimeException InterruptedException ClassNotFoundException IllegalAccessException AWTException 淮海工学院 计算机课程 Throwable类是类库java.lang包中的一个类,派生两个子类 :Exception和Error Exception类有两个构造函数: public Exception(); public Exception(String s); 其中s是对该例外所对应的错误的描述。 从父类Throwable继承的常用方法: 1) public String toString(); 该方法返回描述当前Exception类信息的字符串。 2) public void printStackTrace(); 该方法的功能是完成一个打印操作,在屏幕上输出当前例 外对象的堆栈使用轨迹,即程序先后调用了哪些对象或类 的方法,使得运行过程中产生了这个例外对象。 淮海工学院 计算机课程 (3)系统统定义义的运行异常与所对应对应 的系统统运行错误错误 系统定义的运行异常异常对应的系统运行错误 ClassNotFoundException 未找到欲装载使用的类 ArrayIndexOutOfBoundsExcept ion 数组越界使用 FileNotFoundException 未找到指定的文件或目录 IOException 输入、输出错误 ArithmeticException算术错误,如除数为0 SecurityException安全性错误,如Applet欲读 写文件 MalformedURLExceptionURL格式错误 淮海工学院 计算机课程 (4)用户户自定义义的异常 作用:用来处理程序中特定的逻辑运行错误。 创建用户自定义异常时,一般需要完成如下工作: (1)声明一个新的异常类,使之以Exception类或其他某个 已经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东省云浮市云安区“粤聚英才粤见未来”招聘教育人才9人(南宁师范大学校区专场)考前自测高频考点模拟试题及1套参考答案详解
- 传媒数据标准化研究报告(2025版)
- 2025年中国黄原酸盐行业市场分析及投资价值评估前景预测报告
- 2025年温州永嘉县桥头镇中心卫生院招聘临时医务人员3人考前自测高频考点模拟试题有完整答案详解
- 2025年皖南医学院第二附属医院高层次招聘22人考前自测高频考点模拟试题及完整答案详解1套
- 2025内蒙古通辽市扎鲁特旗教体系统事业单位招聘30人模拟试卷及答案详解(名校卷)
- 2025鄂尔多斯市林业和草原局所属事业单位引进高层次人才考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年烟台市公费医学生考试选聘(139人)模拟试卷及参考答案详解1套
- 2025广东深圳市罗山科技园开发运营服务有限公司高校应届毕业生招聘拟聘模拟试卷含答案详解
- 2025广西柳州市柳江中学参加广西师范大学研究生毕业生春季专场双选会11人考前自测高频考点模拟试题带答案详解
- 《精神病学》考试题库完整
- 自锁现象与摩擦角
- 十二青少年健康危险行为
- 谢孟媛中级文法讲义
- 中国少年先锋队入队申请书 带拼音
- 动火证模板完整版
- 泰国-英语-介绍-
- 水力学与桥涵水文课件
- 你画我猜活动课件
- DIP插件外观检验标准
- 天津科万物业设备台帐
评论
0/150
提交评论