Java编程基础、实例与进阶(下)ppt.ppt_第1页
Java编程基础、实例与进阶(下)ppt.ppt_第2页
Java编程基础、实例与进阶(下)ppt.ppt_第3页
Java编程基础、实例与进阶(下)ppt.ppt_第4页
Java编程基础、实例与进阶(下)ppt.ppt_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java编程基础 实例与进阶 第6章异常处理 内容提要 学习目标基本知识点示例解析知识拓展 学习目标 掌握异常的基本概念 掌握异常的处理机制和处理方法 掌握异常的抛出机制 了解自定义异常的方法 基本知识点 什么是异常异常的处理异常的抛出自定义异常 什么是异常 异常是在程序的运行过程中所发生的异常事件 它中断代码的正常执行顺序 Java中提供了一种独特的异常处理机制 通常通过异常来处理程序设计中可能出现的错误 异常机制提供了程序退出的安全通道 当出现错误后 程序执行的流程发生改变 程序的控制权转移到异常处理器 在Java中 每个异常都是一个对象 它是java lang Throwable类或其子类的实例 当一个方法出现异常后便抛出一个异常对象 该对象中包含有异常信息 调用这个对象的方法可以捕获到这个异常并进行处理 Throwable类有两个标准子类 java lang Error和java lang Exception 错误Error类一般是指虚拟机相关的问题 如系统崩溃 虚拟机出错误 动态链接失败等 这一类错误无法恢复或不可能捕获 将导致应用程序中断 异常Exception类则是指一些可以被捕获且可能恢复的异常情况 如数组下标越界异常ArrayIndexOutOfBoundsExcepton 数字被零除产生异常 ArithmeticException 输入 输出异常IOException等 异常的处理 Java的异常处理是通过5个关键词来实现的 try catch throw throws和finally 一般情况下是用try来执行一段程序 如果出现异常 系统会抛出 throws 一个异常 这时候你可以通过它的类型来捕捉 catch 它 或最后 finally 由缺省处理器来处理 格式为 try 这里书写可能出现异常的代码段 catch Exception1ex1 捕获可能出现的第一种异常Exception1 捕获Exception1异常后的处理代码 catch Exceptionnexn 捕获可能出现的第n种异常Exceptionn 捕获Exceptionn异常后的处理代码 finally 这里书写对于所有异常情况都使用的处理语句 异常的抛出 throw语句用来明确地抛出一个异常 首先 你必须得到一个Throwable类或其子类的对象引用 通过参数传到catch子句 或者用new语句来创建一个实例 下面是throw语句的通常形式 throwinstanceofThrowable thrownewException 新抛出的异常 throws语句用来标明一个成员方法可能抛出的各种异常 对大多数Exception子类来说 Java编译器会强迫你声明在一个成员方法中抛出的异常的类型 下面是throws语句的通常形式 publicdoublediv doublea doubleb throwsArithmeticException returna b 自定义异常 并不一定非要使用Java已经定义的异常 在实际的编程中经常需要创建自己的异常 以便指出编写的代码可能生成的一个特殊错误 创建自己的异常类 必须从一个现有的异常类型 最终继承自Throwable类 继承 继承一个异常同继承一个普通的类的方法是一样的 示例解析 数组下标越界异常空指针异常抛出并捕获异常的示例构造一个特殊的字符串类 数组下标越界异常 演示 空指针异常 演示 抛出并捕获异常的示例 演示 构造一个特殊的字符串类 演示 知识拓展 如何自定义异常 如何自定义异常 演示 第7章图形用户界面 内容提要 学习目标基本知识点示例解析知识拓展 学习目标 掌握AWT图形界面设计中的基本概念 掌握AWT图形界面的设计方法和组件的使用方法 掌握Swing图形界面设计的基本概念 掌握Swing图形界面的设计方法和组件的使用方法 掌握JavaApplet的使用方法 基本知识点 AWT图形用户界面Swing图形用户界面JavaApplet AWT图形用户界面 AWT AbstractWindowToolkit 抽象窗口工具包 是Java提供的建立图形用户界面的工具包 AWT可用于Java小程序 applet 和普通应用程序中 它支持的功能包括 用户界面组件 事件处理模型 图形和图像工具 布局管理器 可以进行灵活的窗口布局 这些布局与窗口的尺寸和屏幕分辨率无关 数据传送类 可以通过剪贴板来进行剪切和粘贴 容器 组件 Compoment 是一个以图形方式显示在屏幕上并能与用户进行交互的对象 例如一个按钮 一个文本框等 组件必须放在一定的容器 Container 中才可以显示出来 容器是java awt Component 所有容器类和组件类的父类 的子类 具有组件的所有性质 其主要功能是容纳其它的组件 常用的容器有java awt Panel java awt Frame和java applet Applet 在后面介绍 如果要生成一个窗口 用Frame类来进行实例化 Frame的外观就像在windows系统下见到的窗口一样 具有标题 边框 菜单等 Frame对象实例化以后 都是没有大小和不可见的 因此必须调用setSize 来设置大小 调用setVisible true 来设置该窗口为可见的 面板 Panel 是最简单的容器类 应用程序可以将其他组件放在面板提供的空间内 这些组件包括其他面板 布局管理器 每个容器都有一个布局管理器 LayoutManager 由布局管理器完成对容器中某个组件的定位或设置其大小尺寸 Java将容器内的所有组件安排给一个 布局管理器 负责管理 如 排列顺序 组件的大小 位置 当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理 不同的布局管理器使用不同算法和策略 容器可以通过选择不同的布局管理器来决定布局 FlowLayout是Panel等容器的缺省布局管理器 其组件的放置规律是从上到下 从左到右进行放置 BorderLayout是Window Frame和Dialog的缺省布局管理器 BorderLayout布局管理器把容器分成5个区域 North South East West和Center 每个区域只能放置一个组件 GridLayout使容器中各个组件呈网格状布局 平均占据容器的空间 事件 要能够让图形界面接收用户的操作 就必须给各个组件加上事件处理机制 在事件处理的过程中 主要涉及三类对象 Event 事件 用户操作在Java语言上的描述 例如键盘操作对应的事件类是KeyEvent EventSource 事件源 事件发生的场所 通常就是各个组件 例如按钮Button EventHandler 事件处理者 接收事件对象并对其进行处理的对象 常用AWT组件 Swing图形用户界面 AWT的发展越来越不能适应图形化界面发展的需要 它缺少一些基本的图形界面元素 并且AWT构件全都是重量构件 即它们都具有同位体 本地的对等组件 并且在本地 不透明 窗口中进行显示 这样将花费昂贵的代价 随着发展的需要 出现了Swing Swing组件几乎都是轻量组件 也就是没有本地的对等组件 轻量组件在它们的重量组件的窗口中绘制 效率大大提高 在Swing中大量使用了MVC体系结构 MVC是现有的编程语言中制作图形用户界面的一种通用的思想 其思路是把数据的内容本身和显示方式分离开 这样就使得数据的显示更加灵活多样 在一个MVC用户界面中 存在三个对象 模型 视图和控制器 模型是指定的逻辑表示法 视图是模型的可视化表示法 而控制器则指定了如何处理用户输入 当模型发生改变时 它会通知所有依赖它的视图 视图使用控制器指定采取的行为 在使用Swing进行编程的时候需要注意以下几点与AWT的不同之处 Swing组件不能直接添加到顶层容器中 它必须添加到一个与Swing顶层容器相关联的内容面板 contentpane 上 内容面板是顶层容器包含的一个普通容器 它是一个轻量级组件 Swing组件以 J 开头 除了有与AWT类似的按钮 JButton 标签 JLabel 复选框 JCheckBox 菜单 JMenu 等基本组件外 还增加了一些丰富的高层组件 如表格 JTable 树 JTree 在Swing中不但用轻量级的组件替代了AWT中的重量级的组件 而且Swing的替代组件中都包含有一些其他的特性 例如 Swing的按钮和标签可显示图标和文本 AWT中的组件与Swing中的替代组件的使用方法类似 Swing独有的组件 JavaApplet 小程序 Applet 就是使用Java语言编写的一段代码 它可以在浏览器中运行 它与Application的区别主要在于其执行方式的不同 Application是从某一个类的main 方法开始运行的 而Applet是在浏览器中运行的 必须创建一个HTML文件 通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行 Applet实现在java applet Applet类中 用户编写的小程序必须继承自java applet Applet类 Applet类提供的主要的方法 示例解析 窗体使用示例FlowLayout使用示例BorderLayout使用示例GridLayout使用示例使窗体可以响应事件Button使用示例Label使用示例Checkbox使用示例Choice使用示例Panel使用示例List使用示例Canvas使用示例 示例解析 续 TextField使用示例TextArea使用示例对话框使用示例Menu使用示例Swing中组件的使用示例JScrollPane使用示例JSplitPane使用示例JTabbedPane使用示例JToolBar使用示例JTable使用示例JTree使用示例小程序使用示例 窗体使用示例 演示 FlowLayout使用示例 演示 BorderLayout使用示例 演示 GridLayout使用示例 演示 使窗体可以响应事件 演示 Button使用示例 演示 Label使用示例 演示 Checkbox使用示例 演示 Choice使用示例 演示 Panel使用示例 演示 List使用示例 演示 Canvas使用示例 演示 TextField使用示例 演示 TextArea使用示例 演示 对话框使用示例 演示 Menu使用示例 演示 Swing中组件的使用示例 演示 JScrollPane使用示例 演示 JSplitPane使用示例 演示 JTabbedPane使用示例 演示 JToolBar使用示例 演示 JTable使用示例 演示 JTree使用示例 演示 小程序使用示例 演示 知识拓展 何为匿名类 如何在图形界面编程中使用匿名类 何为匿名类 如何在图形界面编程中使用匿名类 演示 第8章多线程 内容提要 学习目标基本知识点示例解析知识拓展 学习目标 掌握线程与进程的基本概念 掌握线程的生命周期和控制手段 掌握线程的调度方式 了解多线程之间的同步与通信 基本知识点 什么是线程线程的生命周期与控制线程的调度多线程的同步与通信 什么是线程 进程的结构 程序中单个顺序的流控制称为线程 多线程则指的是在单个程序中可以同时运行多个不同的线程 执行不同的任务 多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行 线程与进程相似 是一段完成某个特定功能的代码 是程序中单个顺序的流控制 但与进程不同的是 同类的多个线程是共享一块内存空间和一组系统资源 而线程本身的数据通常只有微处理器的寄存器数据 以及一个供程序执行时使用的堆栈 线程的生命周期与控制 线程也是有状态和生命周期的 每个Java程序都会有一个缺省的主线程 对于应用程序来说main方法就是一个主线程 Java语言使用的是Thread类及其子类的对象来表示线程的 一个线程的生命周期如下状态 1 新建 当一个Thread类或者其子类的对象被声明并创建时 新的线程对象处于新建状态 此时它已经有了相应的内存空间和其他资源 2 就绪 处于新建状态的线程被启动后 将进入线程队列排队等待CUP服务 这个时候具备了运行的条件 一旦轮到CPU的时候 就可以脱离创建它的主线程独立开始自己的生命周期 3 运行 就绪的线程被调度并获得CUP的处理进入运行状态 每一个Thread类及其子类的对象都有一个重要的run 方法 当线程对象被调度执行的时候 它将自动调用本对象的run 方法 从第一句代码开始执行 对线程的操作应该写到run 方法中 4 阻塞 一个正在执行的线程如果在某种情况下不能执行进入阻塞状态 这时它不能进入排队状态 只有引起了阻塞的原因消失的时候 线程才可以继续进入排队状态等待CUP处理 5 死亡 处于死亡状态的线程不具有继续执行的能力 线程死亡主要的原因是正常运行的线程完成全部工作 即执行完了run 方法 另外就是被提前强制终止 线程的调度 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程 线程调度器按照线程的优先级决定应调度哪些线程来执行 优先级高可以提前被CPU处理 主要分三个级别 高中低分别代表的数字是10 5 1分别有三个常量代表不可以被改变 最小优先级的常量是MIN PRIORITY 普通的优先级的常量是NORM PRIORITY 最高的优先级的常量是MAX PRIORITY一般主线程的优先级是普通 另外可以通过Thread类的setPriority inta 方法来修改系统自动设置的线程优先级 多线程的同步与通信 前面所提到的线程都是独立的 而且异步执行 也就是说每个线程都包含了运行时所需要的数据或方法 而不需要外部的资源或方法 也不必关心其它线程的状态或行为 但是经常有一些同时运行的线程需要共享数据 此时就需考虑其他线程的状态和行为 否则就不能保证程序的运行结果的正确性 线程同步是一个在处理线程的时候需要注意的问题 同步方法要用synchronized关键字类修饰 被这个关键字修饰后 当一个线程A使用这个方法后 其它线程想使用这个方法就必须等待 直到线程A使用完该方法后方可使用 示例解析 通过Thread类实现线程通过Runnable接口实现线程设置线程的优先级终止一个线程幽灵程序示例线程池示例 通过Thread类实现线程 演示 通过Runnable接口实现线程 演示 设置线程的优先级 演示 终止一个线程 演示 幽灵程序示例 演示 线程池示例 演示 知识拓展 如何实现线程的同步 如何在线程之间交换数据 如何实现线程的同步 演示 如何在线程之间交换数据 演示 第9章网络编程 内容提要 学习目标基本知识点示例解析知识拓展 学习目标 掌握网络和Java网络编程的基本概念 掌握Internet的地址操作 掌握URL和URLConnection的编程知识 掌握套接字编程的一些基本知识 基本知识点 网络和Java网络编程的基本概念Internet地址操作URL和URLConnection套接字编程 网络和Java网络编程的基本概念 Internet地址操作 InetAddress类是对IP地址 包括IPv4和IPv6 的抽象和封装 它是后续网络类学习和网络编程的基础 InetAddress共有4个构造方法 其中InetAddress getByName StringhostName 这个静态构造方法以主机名为参数 使用域名服务查找该主机的IP地址 是经常使用的方法 调用的代码如下 InetAddressaddr InetAddress getByName 在调用该方法的时候 如果在域名服务中没有找到主机 会抛出UnknownHostException的异常 需要进行捕获处理 URL和URLConnection URL UniformResourceLocator 统一资源定位符 用来标识Internet上资源的位置 典型的URL如http www gridsphere org gridsphere gridsphere cid grid 其中http表示所用的协议 www gridsphere org指明了URL的主机名 而gridsphere gridsphere指明了服务器上的路径和文件名 cid grid指明了向服务器提供的查询参数 本节主要介绍了URL相关的 URL类和 URLConnection类 URL类是对URL的抽象 URL类根据URL的各个组成部分设置了不同的属性 如协议 主机名 端口 路径 文件名等等 这些属性的设置方法只对包内成员可见 但是具有公共的属性读取方法来获得它们的值 套接字编程 套接字 Socket 是一种软件形式的抽象 用于表达两台机器间一个连接的两端 针对一个连接 每台机器上都有一个套接字 在Java中 我们创建一个套接字 用它建立与其他机器的连接 得到的结果是一个InputStream以及OutputStream 从而将连接作为一个IO流对象对待 有两个基于流的套接字类 ServerSocket和 Socket 分别用于服务器端和客户端建立套接字连接 使用客户端套接字进行编程的步骤一般包括 构造一个新的套接字对象 使用新创建的套接字对象连接远程服务器 连接成功 从套接字获得输入流和输出流 进而开始发送和接受数据 数据传输完毕 关闭连接 仅仅有客户端套接字是不够的 而客户端套接字 简称套接字 不能够编写服务器程序 Java为编写服务器端套接字提供了 ServerSocket类 用于编写服务器程序 负责侦听接入的TCP连接 在某个端口构造服务器端套接字对象 侦听接入该端口的连接 该过程一直阻塞 直到客户端进行连接 连接成功会返回一个套接字对象 发送和接受数据 客户端或者服务器端关闭连接 服务器返回步骤2 侦听下一次连接 示例解析 显示指定域名的主机的IP地址信息显示本机的IP地址信息获得一个指定的URL的内容查看指定主机的指定端口是否提供TCP服务Echo的服务端和客户端实现 显示指定域名的主机的IP地址信息 演示 显示本机的IP地址信息 演示 获得一个指定的URL的内容 演示 查看指定主机的指定端口是否提供TCP服务 演示 Echo的服务端和客户端实现 演示 知识拓展 如何使用Socket获得一个指定的URL的内容如何使用服务端套接字查看本机的指定端口是否提供TCP服务如何实现ping命令 如何获得本机的MAC地址 如何使用Socket获得一个指定的URL的内容 演示 如何使用服务端套接字查看本机的指定端口是否提供TCP服务 演示 如何实现ping命令 演示 如何获得本机的MAC地址 演示 第10章优雅而高效的Java编程 内容提要 学习目标基本知识点示例解析知识拓展 学习目标 掌握一些Java的编码规范 了解Java代码的执行效率 了解一些重要的设计模式 基本知识点 编码规范程序的效率优雅的编程 设计模式浅谈 编码规范 编码规范是一种约定俗成的东西 遵循一定的编码规范是一种良好的编程习惯 可以增加程序的可读性 使得阅读程序的人尽快理解新的代码 编码规范可以分为文件命名规范 文件组织规范 注释规范 代码书写规范等等 程序的效率 在写代码的时候 要注意代码的效率 使得程序利用尽可能少的资源完成预定的任务 完成同一功能的若干种代码实现中 总有一种实现的效率更高一些 但是究竟什么样的代码的执行效率更高 需要读者在编程实践中注意观察 留心体会并注意总结 优雅的编程 设计模式浅谈 设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案 面向对象开发中程序员更重视代码的重用性和可维护性 设计模式使人们可以更加简单方便地重复使用成功的设计和体系结构 设计模式所描述的问题及其问题的答案都是具有代表性的问题和问题的答案 它们以不同形式重复出现 可以应用在不同的环境中 工厂模式 工厂模式是类的创建模式 用来把具有共同接口的类实例化 工厂模式动态决定实例化哪一个类 而不必事先了解要实例化的是哪一个类 工厂模式又可以分为静态工厂模式 工厂方法模式和抽象工厂模式 其中 静态工厂模式由一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论