全国二级Java考试中的几个难点.ppt

上传人:xt****7 文档编号:5209759 上传时间:2020-01-23 格式:PPT 页数:51 大小:872.81KB
返回 下载 相关 举报
全国二级Java考试中的几个难点.ppt_第1页
第1页 / 共51页
全国二级Java考试中的几个难点.ppt_第2页
第2页 / 共51页
全国二级Java考试中的几个难点.ppt_第3页
第3页 / 共51页
点击查看更多>>
资源描述
全国二级Java考试中的几个难点 输入输出流和文件处理Java的多线程机制Applet类与Applet小程序Java的异常处理 1输入输出流和文件处理 1 1流的概念流是指在计算机的输入与输出之间运动的数据的序列 输入流代表从外设流入计算机的数据序列 输出流代表从计算机流向外设的数据序列 流的最大特点是 数据的获取和发送均按数据序列顺序进行 Java中的流分为两种 被抽象为四个类 字节流 InputStream类和OutputStream类字符流 Reader类和Writer类字符流比字节流更有效 1 字节流 从抽象类InputStream和OutputStream派生出来的一系列类 这类流以字节 byte 为基本处理单位 基本输入流类InputStream的常用方法 从流中读取数据 intread 读取一个字节 返回值为所读的字节intread byteb 读取多个字节 放置到字节数组b中 通常读取的字节数量为b的长度 返回值为实际读取的字节的数量intread byteb intoff intlen 读取len个字节 放置到以下标off开始字节数组b中 返回值为实际读取的字节的数量intavailable 返回值为流中尚未读取的字节的数量longskip longn 读指针跳过n个字节不读 返回值为实际跳过的字节数量 关闭流 close 流操作完毕后必须关闭 基本输出流类OutputStream的常用方法 输出数据 voidwrite intb 往流中写一个字节bvoidwrite byteb 往流中写一个字节数组bvoidwrite byteb intoff intlen 把字节数组b中从下标off开始 长度为len的字节写入流中 flush 刷空输出流 并输出所有被缓存的字节由于某些流支持缓存功能 该方法将把缓存中所有内容强制输出到流中 关闭流 close 流操作完毕后必须关闭 2字符流 从抽象类Reader和Writer派生出的一系列子类 这类流以16位的Unicode码表示的字符 一个字符由两个字节组成 为基本处理单位 常用字符流子类和功能 1 2基本流 1 键盘输入和格式化输出Java有3个内置的标准流对象 1 标准输入流System in 用来读取用户从键盘的输入2 标准输出流System out 用来在屏幕上显示信息3 标准输出流System err 用来显示出错信息 1 键盘输入 使用System in对象的read 方法例 charc char System in read 使用InputStreamReader BufferReader流类例 InputStreamReaderisr newInputStreamReader System in BufferReaderbr newBufferReader isr 2 格式化输出 用Java的标准输出System out 可以输出不同类型的对象 例 Inta 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 Stringpath 指明磁盘文件或目录名及其路径注意 目录分隔符用System dirSep表示如 Filef1 newFile c System dirSep sj File Stringpath Stringname 文件或目录的路径 文件或目录名 File Filedir Stringname 2 获取文件或目录属性 已经存在的磁盘目录 3 文件或目录的操作 注意 由于JavaApplet程序是从网络上下载到本地机器运行的 不可知也不可控 所以Java的安全机制禁止JavaApplet程序访问和存取本地文件 如果试图在JavaApplet程序中使用文件操作 则将引发Java的安全性异常 文件操作例子 2 写文本文件 方法一 用FileOutputStream打开文件my txt 然后用PrintStream对象p的println方法把字符串写入文件中 例 FileOutputStreamfout newFileOutputStream my txt PrintStreamp newPrintStream fout p println 要写入文本文件中的内容 p close 写文本例子1 方法二 用FileWriter打开文件myf txt 又创建了文本输出流out 然后用out的print 或者println 方法把字符串写入文件中 例 FileWriterfw newFileWriter myf txt PrintWriterout newPrintWriter fw out print 要写入文本文件中的内容 out close 关于输出fw close 关闭文件 写文本例子2 3 读文本文件 方法一 用FileInputStream打开文件my txt 然后建立DataInputStream的对象in 文件流 使用in的readLine 方法以一行为单位读出my txt文件中的所有字符串 例 FileInputStreamfs newFileInputStream my txt DataInputStreamin newDataInputStream fs while in available 0 System out println in readLine in close 关闭输入流 读文本例子1 方法二 用FileReader打开文件myf txt 然后用BufferedReader类的对象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 关闭文件 读文本例子2 4 程序对文件的随机访问 用RandomAccessFile类可以实现对文件的随机读写操作 即可以在文件的任意位置执行数据读写 创建RandomAccessFile的对象例 Filemf newFile myf txt RandomAccessFilemyRAF newRandomAccessFile mf rw 访问模式 rw 可读 可写r 只读 作为数据源的文件 对文件进行读写操作 RandomAccessFile类实现了DataInput和DataOutput接口 在读 写时具备强大的含类型转换的输入 输出功能 RandomAccessFile类的所有方法都有可能抛出IOException异常 在利用它实现文件操作时需要将相关语句放在try块中 并配上catch块来处理异常 文件访问例子 2Java的多线程机制 2 1Java中的线程1 程序 进程与线程的区别 线程是比进程更小的执行单位 一个进程在执行过程中可以产生多个线程 每个线程有自己的产生 存在 消亡的过程 线程间可以共享相同的内存单元 实现数据交换 实时通信和同步操作 进程是程序的一次动态执行过程 放电影 对应着代码加载 执行到执行完毕的全过程 每一个进程都有自己独立的一块内存空间 一组系统资源 在进程概念中 每一个进程的内部数据和状态都是完全独立的 程序是一段静态的代码 是应用软件执行的蓝本 电影胶片 Java的多线程 Java内在支持多线程 它的所有类都是在多线程下定义的 Java利用多线程可以开发能同时处理多个任务的功能强大的应用程序 Java程序通过流控制来执行程序流 程序中单个顺序的流控制称为线程 多线程则指的是在单个程序中可以同时运行多个不同的线程 执行不同的任务 多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行 使用多线程的好处 使UI交互的响应更块充分利用多处理器系统简化建模执行异步和后台处理 Java中的线程由三部分组成 1 虚拟的CPU 封装在java lang Thread类中2 CPU所执行的代码 传递给Thread类3 CPU所处理的数据 传递给Thread类 Java中的线程多任务示意图 2 2线程的状态与生命周期 start sleep 时间到 获得锁 wait scheduler yield sleep 或join run 方法结束 synchronized notify notifyAll Interrupt 1 创建状态 newThread 执行下列语句时 线程就处于创建状态 ThreadmyThread newThread 当一个线程处于创建状态时 它仅仅是一个空的线程对象 系统不为它分配资源 2 可运行状态 Runnable ThreadmyThread newThread 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 构造函数 publicThread 创建一个系统线程类的对象 publicThread Runnabletarget 在上一个构造函数完成的操作基础之上 利用参数对象 实现了Runnable接口的target对象中所定义的run 方法 来初始化或覆盖新创建的线程对象的run 方法 publicThread StringThreadName 在第一个构造函数工作的基础上 为所创建的线程对象指定一个字符串名称供以后使用 publicThread Runnabletarget StringThreadName 实现 两构造函数的功能 2 线程优先级 Thread类有三个有关线程优先级的静态常量 MIN PRIORITY代表最小优先级 通常为1 MAX PRIORITY代表最高优先级 通常为10 NORM PRIORITY代表普通优先级 缺省数值为5 3 Thread类的常用方法start 调用该方法启动线程run 线程被调度后执行的动作sleep intmillsecond 让线程放弃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 3Applet类与Applet小程序 3 1Applet的基本工作原理JavaApplet是通过兼容Java的Internet浏览器来解释执行的 编译好的Java字节码文件保存在特定的WWW服务器上 当浏览器遇到网页中嵌入的标记时 就会根据该Applet的名字和位置自动把字节码从服务器上下载到本地 并利用浏览器本身拥有的Java解释器直接执行该字节码 由于有浏览器的支持 Applet不需要建立自己的主流程框架 也不需要有专门的图形界面 Applet需要做的是接收和响应浏览器发来的消息或事件 3 2Applet类 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的生命周期与主要方法 3 3HTML文件参数传递 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 4Java的异常处理 4 1编程中的错误编程中的错误分为编译错误和运行错误 编译错误 程序由于语法的原因无法通过由源代码到目标码的编译而产生的错误 运行错误 系统错误 引发操作系统问题的错误 如死循环 死机 逻辑错误 无法实现设计意图和功能的错误 如算法考虑不周 边界条件不正确 4 2异常与异常类 1 Java的异常处理机制异常是特殊的错误运行对象 又称例外 对应着Java语言特定的运行错误处理机制 为了能够及时有效地处理程序中的运行错误 Java引入了异常和异常类 异常是异常类的对象 一旦一个异常对象产生了 系统中就一定有相应的机制来处理它 确保不会产生死机 死循环或其它对操作系统的损害 保证整个程序运行的安全性 2 异常类结构与组成每一种类对应一种特定的错误 异常类都是系统Exception类的子类 Throwable类 Exception类 Error类 IOException RuntimeException InterruptedException ClassNotFoundException IllegalAccessException AWTException Throwable类是类库java lang包中的一个类 派生两个子类 Exception和ErrorException类有两个构造函数 publicException publicException Strings 其中s是对该例外所对应的错误的描述 从父类Throwable继承的常用方法 1 publicStringtoString 该方法返回描述当前Exception类信息的字符串 2 publicvoidprintStackTrace 该方法的功能是完成一个打印操作 在屏幕上输出当前例外对象的堆栈使用轨迹 即程序先后调用了哪些对象或类的方法 使得运行过程中产生了这个例外对象 3 系统定义的运行异常与所对应的系统运行错误 4 用户自定义的异常 作用 用来处理程序中特定的逻辑运行错误 创建用户自定义异常时 一般需要完成如下工作 1 声明一个新的异常类 使之以Exception类或其他某个已经存在的系统异常类或用户异常类为父类 2 为新的异常类定义属性和方法 或重载父类的属性和方法 使这些属性和方法能够体现该类所对应的错误的信息 定义足够多的异常类是构建一个稳定完善的应用系统的重要基础之一 4 3异常的抛出 Java程序在运行时如果由于可识别的错误 系统就产生一个与该错误相对应的异常类的对象 这个过程就是异常的抛出 1 系统自动抛出的异常所有系统定义的运行异常都可以由系统自动抛出 例 publicclassTestSystemException publicstaticvoidmain String args inta 0 b 5 System out println b a 以零为除数 引发系统定义的算术异常 2 语句抛出的异常用户程序定义的异常不可能靠系统自动抛出 必须借助throw语句定义何种情况才算产生了此种异常对应的错误 并抛出这个异常类的新对象 语法 修饰符返回类型方法名 参数列表 throws异常类名列表 throw异常类名 对有可能出现异常的方法 用throws语句列出可能出现的异常类名 这样当发生异常时 系统就调用异常处理程序 注意的问题 1 一般这种抛出异常的语句应该被定义为在满足一定条件时执行 如在if语句的条件分支中 2 含有throw语句的方法 应该在方法头定义中增加如下的部分 throws异常类名列表 3 由于系统不能识别和创建用户自定义的异常 所以需要编程者在程序中的合适位置创建自定义异常的对象 并利用throw语句将这个新异常对象抛出 4 4异常的处理 包括捕捉异常 程序流程的跳转和异常处理语句块的定义 1 捕捉异常异常被抛出时 用专门的语句来接收异常对象 格式如下 catch 异常类名异常形式参数名 异常处理语句 Java语言规定 每个catch语句块都应该与一个try语句块相对应 这个try语句块用来启动Java的异常处理机制 可能抛出异常的语句 包括throw语句 调用可能抛出异常方法的方法调用语句 都应该包含在这个try语句块中 2 多异常处理通过一个try块后面定义若干个catch块来实现 每个catch块用来接收和处理一种特定的异常对象 注意如下问题 1 catch块中的语句应根据异常的不同执行不同的操作 2 处理多异常时应注意设计各catch块的排列顺序 一般处理较具体和常见的异常应放在前 可以与多种异常相匹配的应放在后 否则可能造成它后面的catch块将永远不被使用
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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