Java第九章PPT教学课件
合集下载
java课件第9章91异常处理.ppt

第 16 页
结束
当catch前面的try块中发生了一个异常,try-catch语句就会自动在try 块后面的各个catch块中,找出与该异常类相匹配的参数。当参数符合以 下三个条件之一时,就认为这个参数与产生的异常相匹配:
(1) 参数与产生的异常属于一个类; (2) 参数是产生的异常的父类; (3) 参数是一个接口时,产生的异常实现了这一接口。
带throws异常说明的方法说明形式如下: … 方法名(…) throws 异常类列表 { 方法体 }
第7页
结束
方法抛出的异常类是throws子句中指定的异常类或其子类。 比如在方法的说明中指明方法可能产生IOException, 但是实 际上可能抛出的异常或许是EOFException类的实例,这些异 常都是IOException的子类。
第6页
结束
9.1.2 抛出异常
Java提供了两种不同的异常抛出机制: throws抛出异常——间接抛出异常 throw 抛出异常——直接抛出异常
1. throws 抛出异常
throws异常说明总是和方法说明出现在一起。这样,方法说明 告诉编译器该方法可能会产生哪些异常,从而要求它的调用者必 须考虑处理这些异常。
static String getInput() throws IOException
// getInput()方法抛出异常,因为在它的方法体中调用的 //read方法抛出异常,并且该方法体本身使用throw抛出异常
{ char [] buffer = new char[20]; int counter = 0; boolean flag = true; while(flag) { buffer[counter] = (char)System.in.read();
JAVA第9章 输入输出课件

9.2.5 小文件的读写
• Files类提供了从一个较小的二进制文件和文 本文件读取和写入的方法。readAllBytes() 方法和readAllLines()方法分别是从二进制 文件和文本文件读取。这些方法可以自动打 开和关闭流,但不能处理大文件。
9.2.5 小文件的读写
• public static byte[] readAllBytes(Path path):从指定的二进制文件中读取所有字 节。
9.2 Files类操作
• java.nio.类是一个功能非常强大的类。 • 该类定义了大量的静态方法用来读、写和
操纵文件和目录。Files类主要操作Path对 象。
9.2.1 创建和删除目录和文件
• public static Path createDirectory(Path dir, <?>…attrs)
= ();
1. 类
• Path getPath(String first, String …more) • String getSeparator() • Iterable<Path> getRootDirectores() • boolean isOpen() • boolean isReadOnly()
• static Path setOwner(Path path, UserPrincipal) :设置指定文件的所有者。
9.2.2 文件属性操作
• 下面程序演示了Files类几个方法的使用。 • 程序9.1
R u n
9.2.3 文件和目录的复制与移动
• 使用Files类的copy()方法可以复制文件和 目录,使用move()方法可以移动目录和文 件。copy()方法的一般格式为: public static Path copy( Path source, Path target, CopyOption…options)
Java课件第九章

因为同一个三角形上的所有点必处于同一个平面上,所以 所有点的法向相同,这样就可取其中一点作为代表(通常取其 重心点)。根据视点、光源、物体的颜色等已知的条件及物体 的材质,采用前述的公式计算出该点的辉度值,并以此作为整 个三角形面素的辉度值。 在计算三角形面素辉度值时,要计算三角形面素的重心坐标、 法线矢量、视线矢量和光源方向矢量。其计算方法与前述的完 全一样。
栅图形显示器的RGB三基色系统。这样,phong模型可表示成:
1 R1 R R1 G G cosn 1 G 1 1 1 B1 B B1 R0 R1 G d (1 d ) cos G 0 1 B0 B1
第九章 真实感图形生成技术
本章重点
1.了解真实感图形绘制的基本原理。
2.了解并掌握简单光照模型的组成及应用。
3.了解并掌握绘制真实感图形时常用的多边 形明暗处理的方法。
难点:1.如何使用简单光照模型? 2.如何绘制真实感图形?
9.1 引言
真实感图形的绘制是计算机图形学的一个重要组成部分, 它综合利用了数学、物理学、计算机科学和其它科学知识,在
i=1 3
p3
其中 j=
i+1 (i≠3) 1 (i=3)
p1
ny=∑(zi-zj)(xi+xj)
i=1
3
nz=∑(xi-xj)(yi+yj)
i=1
3
2.视线方向矢量 对于一个小三角形面片而言,前面已得到了它的法线矢量
N,如果我们从面片外的一个视点处 E 观察该面片,那么面片
上的任一点与E连接就是该点处的视线方向。 设三角形的重心坐标为G(gx,gy,gz) 则 ∑ xi gx=
栅图形显示器的RGB三基色系统。这样,phong模型可表示成:
1 R1 R R1 G G cosn 1 G 1 1 1 B1 B B1 R0 R1 G d (1 d ) cos G 0 1 B0 B1
第九章 真实感图形生成技术
本章重点
1.了解真实感图形绘制的基本原理。
2.了解并掌握简单光照模型的组成及应用。
3.了解并掌握绘制真实感图形时常用的多边 形明暗处理的方法。
难点:1.如何使用简单光照模型? 2.如何绘制真实感图形?
9.1 引言
真实感图形的绘制是计算机图形学的一个重要组成部分, 它综合利用了数学、物理学、计算机科学和其它科学知识,在
i=1 3
p3
其中 j=
i+1 (i≠3) 1 (i=3)
p1
ny=∑(zi-zj)(xi+xj)
i=1
3
nz=∑(xi-xj)(yi+yj)
i=1
3
2.视线方向矢量 对于一个小三角形面片而言,前面已得到了它的法线矢量
N,如果我们从面片外的一个视点处 E 观察该面片,那么面片
上的任一点与E连接就是该点处的视线方向。 设三角形的重心坐标为G(gx,gy,gz) 则 ∑ xi gx=
Java第9章.ppt

▪ 生命周期 ▪ 常用方法
11
1 小程序的生命周期
▪ 小程序的生命周期:是指一个applet程序从被下 载起,到被系统回收所经历的过程。
初始
离开页面
运行
暂停
再次访问页面
消亡
12
2 与生命周期相关的方法
▪ init( )方法
当Applet对象被创建并初次装入浏览器时,init( ) 方法会被自动调用,通常用于完成数据的初始化 操作。
保持一致
}
必须包含
一个方法
4
3 小程序举例 ( 程序9-1 ):
import java.awt.Graphics; // 装入类库 import java.applet.Applet; public class HelloWorld extends Applet {
String hw_text; public void init( ){hw_text= “Hello Java !”;} public void paint (Graphics g ) {
www服务器
请求
HTML 文件
下载
HTML 文件
HTML 文件 嵌入
Applet
www服务器
请求 Applet 字节码
www浏览器
下载Applet字节码
解释执行Applet字节码
7
5 Applet的安全机制
▪ 对系统安全性的限定尺度通常是在浏览器中设 定的。
▪ 都禁止Applet程序的下述行为 运行过程中调用执行另一个程序 所有文件I/O操作 调用本机(native)方法 企图打开提供该Applet的主机以外的某个套 接口(socket)
8
Applet的安全机制图示
11
1 小程序的生命周期
▪ 小程序的生命周期:是指一个applet程序从被下 载起,到被系统回收所经历的过程。
初始
离开页面
运行
暂停
再次访问页面
消亡
12
2 与生命周期相关的方法
▪ init( )方法
当Applet对象被创建并初次装入浏览器时,init( ) 方法会被自动调用,通常用于完成数据的初始化 操作。
保持一致
}
必须包含
一个方法
4
3 小程序举例 ( 程序9-1 ):
import java.awt.Graphics; // 装入类库 import java.applet.Applet; public class HelloWorld extends Applet {
String hw_text; public void init( ){hw_text= “Hello Java !”;} public void paint (Graphics g ) {
www服务器
请求
HTML 文件
下载
HTML 文件
HTML 文件 嵌入
Applet
www服务器
请求 Applet 字节码
www浏览器
下载Applet字节码
解释执行Applet字节码
7
5 Applet的安全机制
▪ 对系统安全性的限定尺度通常是在浏览器中设 定的。
▪ 都禁止Applet程序的下述行为 运行过程中调用执行另一个程序 所有文件I/O操作 调用本机(native)方法 企图打开提供该Applet的主机以外的某个套 接口(socket)
8
Applet的安全机制图示
java第九章课件

13
9.3 线程的创建
线程从根本上讲是一段程序代码序列,还 需要在程序中实现。 Java语言支持多线程,线程在Application 程序和Applet程序中都可以使用,在Applet 中使用得更普遍一些。 Java语言程序中实现线程的程序设计的关 键是使主程序获得run()方法并重写run()方 法。 根据获得run()方法的途径不同,有两种方 式获得Thread的实例。
17
notifyAll() //唤醒在此对象监视器上等待的所有线程 wait() //导致当前的线程等待 wait(long timeout) //导致当前的线程等待timeout毫秒 wait(long timeout, int nanos) //导致当前的线程等待timeout 毫秒加nanos纳秒 isAlive() //测试线程是否处于活动状态 isInterrupted() //测试线程是否已经中断 getPriority() //返回线程的优先级 getId() //返回线程的标识符 getName() //返回线程的名称 getState() //返回线程的状态 setPriority(int newPriority) //更改线程的优先级 setName(String name) //改变线程名称,使之与参数name相同
notify()
notifyall()
等待态 休眠态
wait()
运行态
等待任务
阻塞态 死亡态
sleep()
完成任务或终止
11
线程的优先级
每个线程都有自己的优先级。当 Java线程被创建时,该线程从父线程 中继承优先级并保持一致。线程被创 建后,可以改变线程的优先级。 线程的优先级定义为10级,分别用 数字1到10表示。
9.3 线程的创建
线程从根本上讲是一段程序代码序列,还 需要在程序中实现。 Java语言支持多线程,线程在Application 程序和Applet程序中都可以使用,在Applet 中使用得更普遍一些。 Java语言程序中实现线程的程序设计的关 键是使主程序获得run()方法并重写run()方 法。 根据获得run()方法的途径不同,有两种方 式获得Thread的实例。
17
notifyAll() //唤醒在此对象监视器上等待的所有线程 wait() //导致当前的线程等待 wait(long timeout) //导致当前的线程等待timeout毫秒 wait(long timeout, int nanos) //导致当前的线程等待timeout 毫秒加nanos纳秒 isAlive() //测试线程是否处于活动状态 isInterrupted() //测试线程是否已经中断 getPriority() //返回线程的优先级 getId() //返回线程的标识符 getName() //返回线程的名称 getState() //返回线程的状态 setPriority(int newPriority) //更改线程的优先级 setName(String name) //改变线程名称,使之与参数name相同
notify()
notifyall()
等待态 休眠态
wait()
运行态
等待任务
阻塞态 死亡态
sleep()
完成任务或终止
11
线程的优先级
每个线程都有自己的优先级。当 Java线程被创建时,该线程从父线程 中继承优先级并保持一致。线程被创 建后,可以改变线程的优先级。 线程的优先级定义为10级,分别用 数字1到10表示。
java 课件 第9章

异常类的继承结构
4
Exception子类的继承关系
Exception
ClassNotFoundException ClassNotSupportedException IllegalAccessException InstantiationException InterruptedException NoSuchMethodException RuntimeException ArithmeticException ArrayStoreException ClassCastException IllegalArgumentException
15
例9-2 运行结果
ArithmeticException catched ! Exception message:ng.ArithmeticException: / by zero Finally block. 如果将循环语句中的“y=0”改为“y=3”,那么不会出现异常, try块内的所有语句正常执行,但catch块将不执行,最后跳 转到finally块去执行。重新编译并运行程序,输出结果如下: 5 Computing successfully! Finally block!
第九章
异常处理
1
9.1 Java异常处理机制 异常处理机制 9.2 异常处理方式
2
9.1 异常处理机制
Java使用异常对程序给出一个统一 使用异常对程序给出一个统一 和相对简单的抛出和处理错误的机制。 和相对简单的抛出和处理错误的机制。 如果一个方法本身能抛出异常,调用者 如果一个方法本身能抛出异常, 可以捕获异常使之得到处理; 可以捕获异常使之得到处理;也可以回 避异常,这时异常将在调用的堆栈中向 避异常, 下传递,直到被处理。 下传递,直到被处理。
《Java程序设计案例教程》第09章

public static void main(String[] args) {
❖
//读取E 盘test.txt 中的内容,显示输出
❖
FileInputStream in = null;
❖
int b;
❖
try {
❖
in = new FileInputStream("E:/test.txt");
❖
while ((b = in.read()) != -1) {
▪ 对于这两个read()方法,如果读取文件时发生错误,则会抛出IOException的异常。
Java程序设计案例教程
幻灯片 8,共38页
8
FileOutputStream类
❖ (1)FileOutputStream类的构造方法 ▪ 创建一个指向file文件中写入字节数据的FileOutputStream对象 • public FileOutputStream(File file) throws FileNotFoundException ▪ 创建一个指向File文件中写入字节数据的FileOutputStream对象,且如果第2个参数为true,则将字节数据追加到 文件末尾处,否则将字节数据写入文件开始处覆盖原有的文件 • public FileOutputStream(File file,boolean append) throws FileNotFoundException ▪ 创建一个向具体指定名称为name的文件中写入字节数据的FileOutputStream对象 • public FileOutputStream(String name) throws FileNotFoundException ▪ 创建一个向具体指定名称为name的文件中写入字节数据的FileOutputStream对象,且如果第2个参数为true,则 将字节数据追加到文件末尾处,否则将字节数据写入文件开始处覆盖原有的文件 • public FileOutputStream(String name,boolean append) throws FileNotFoundException
Java语言程序设计课件第9章Java网络编程

• InetAddress 类提供了操作IP地址的各种方法。该类本身没有构造方法,而是通过调 用相关静态方法获取实例。常用方法:
方法名称 boolean equals(Object obj) byte[] getAddress() static InetAddress[] getAHByName(String host)
9.4.1 DATAGRAMPACKET类
• 在TCP/IP协议的传输层除了一个TCP协议之外,还有一个UDP协议。UDP协议是用户 数据报协议的简称,也用于网络数据的传输。虽然UDP协议是一种不太可靠的协议, 但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP就会表现出更 大的优势。
9.1 JAVA 网络编程基础知识
• 9.1.1 网络协议 • 9.1.2 套接字和端口
9.1.1 网络协议
• 网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通信。在Java语 言中包含网络编程所需要的各种类,编程人员只需要创建这些类的对象,调用相应 的方法,就可以进行网络应用程序的编写。
9.3.4 传输对象数据
• 经过前面的学习,掌握了如何在服务器开始一个端口监听套接字,以及如何在客户 端连接服务器,发送简单的数字。本次案例将实现如何在客户端发送一个对象到服 务器端,服务器如何解析对象中的数据。
9.4 JAVA UDP通信
• 9.4.1 DatagramPacket类 • 9.4.2 DatagramSocket类
9.3 JAVA TCP通信
• 9.3.1 ServerSocket 类 • 9.3.2 Socket 类 • 9.3.3 客户端与服务器端的简单通信 • 9.3.4 传输对象数据
9.3.1 SERVERSOCKET 类
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TextField text; public Exam5_19() {
super(“我的菜单窗口”); setSize(300, 200); } public void init() { MenuBar myB = new MenuBar(); setMenuBar(myB); Menu m1 = new Menu(“文件”); m1.add(new MenuItem(“打开”)); MenuItem m11 = new MenuItem(“保存”); m11.setEnabled(false); m1.add(m11); m1.addSeparator(); m1.add(“退出”); m1.addActionListener(this); myB.add(m1);
Menu m3 = new Menu(“帮助”); m3.add(“关于”); m3.addActionListener(this);
myB.setHelpMenu(m3);
text = new TextField();
add(“South”, text);
2020/1}2/10
6
使用菜单组件的例子
2020/12/10
2
//(c)通过Action对象新建“New”菜单项,并添加事件监听器。 newItem = (new ShowAction("New")); //(c)通过指定菜单项对象新建“Paste”菜单项。 pasteItem = new JMenuItem("Paste", 'P'); //(d)将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加 入到菜单栏中。 (newItem); editMenu.add(pasteItem); viewMenu.add(optionMenu); menuBar.add(); menuBar.add(editMenu); menuBar.add(viewMenu);
m2.addSeparator(); CheckboxMenuItem mycmi = new CheckboxMenuItem(“全选”); mycmi.addItemListener(this);
m2.add(mycmi);
m2.addActionListener(this);
myB.add(m2);
2020/12/10
7
❖ 菜单项的使用状态 菜单项能够被选取取决于菜单项的启用和禁用状态:
//初始设置“Save”菜单项为禁用状态。 saveItem.setEnabled(false);
❖ 快捷键和加速器 快捷键显示为带有下划线的字母,加速器则显示为菜单项
旁边的组合键。:
//设置菜单的快捷键。 ('F'); //设置“Exit”菜单项的快捷键为“T”。 JMenuItem exitItem = new JMenuItem("Exit", 'T'); //设置“Exit”菜单项的加速器为“Ctrl+T”。 exitItem.setAccelerator(KeyStroke.getKeyStroke(
setJMenuBar(menuBar); //(b)创建“File”菜单、“Edit”菜单和“View”菜单。 JMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
JMenu viewMenu = new JMenu("View"); //(b)创建子菜单。 JMenu optionMenu = new JMenu("Option");
2020/12/10
5
使用菜单组件的例子
); m2.add(“复制”); Menu m21 = new Menu(“颜色”); m21.add(“前景色”); m21.add(“背景色”); m21.addActionListener(this);
m2.add(m21);
2020/12/10
3
菜单组件
• java.awt.MenuBar类
– MenuBar() – setMenuBar(菜单对象)
• java.awt.Menu类 • java.awt.MenuItem类 • java.awt.CheckboxMenuItem类 • java.awt.PopupMenu类
MenuComponent
MenuBar
MenuItem
2020/12/10
CheckboxMenuItem
Menu PopupMenu 4
使用菜单组件的例子
import java.awt.*; import java.awt.event.*; public class Exam5_19 extends Frame implements ActionListener, ItemListener {
KeyEvent.VK_T, InputEvent.CTRL_MASK));
2020/12/10
7.4.8菜单以及弹出式菜单
典型的菜单:
2020/12/10
1
❖ 创建菜单 四个步骤:创建菜单栏、创建菜单以及子菜单、创建菜单
项,并将菜单项加入到子菜单或菜单中,将子菜单加入到菜单 中,将菜单加入到菜单栏中。
//(a)创建菜单栏,并将菜单栏加入到框架中。 JMenuBar menuBar = new JMenuBar();
text.setText(“状态改变”); } public void actionPerformed(ActionEvent e) {
text.setText(e.getActionCommand()); if (e.getActionCommand() == “退出”)
System.exit(0); } }
public static void main(String args[]) { Exam5_19 myMenu = new Exam5_19(); myMenu.init(); myMenu.setVisible(true);
} public void itemStateChanged(ItemEvent e) {
super(“我的菜单窗口”); setSize(300, 200); } public void init() { MenuBar myB = new MenuBar(); setMenuBar(myB); Menu m1 = new Menu(“文件”); m1.add(new MenuItem(“打开”)); MenuItem m11 = new MenuItem(“保存”); m11.setEnabled(false); m1.add(m11); m1.addSeparator(); m1.add(“退出”); m1.addActionListener(this); myB.add(m1);
Menu m3 = new Menu(“帮助”); m3.add(“关于”); m3.addActionListener(this);
myB.setHelpMenu(m3);
text = new TextField();
add(“South”, text);
2020/1}2/10
6
使用菜单组件的例子
2020/12/10
2
//(c)通过Action对象新建“New”菜单项,并添加事件监听器。 newItem = (new ShowAction("New")); //(c)通过指定菜单项对象新建“Paste”菜单项。 pasteItem = new JMenuItem("Paste", 'P'); //(d)将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加 入到菜单栏中。 (newItem); editMenu.add(pasteItem); viewMenu.add(optionMenu); menuBar.add(); menuBar.add(editMenu); menuBar.add(viewMenu);
m2.addSeparator(); CheckboxMenuItem mycmi = new CheckboxMenuItem(“全选”); mycmi.addItemListener(this);
m2.add(mycmi);
m2.addActionListener(this);
myB.add(m2);
2020/12/10
7
❖ 菜单项的使用状态 菜单项能够被选取取决于菜单项的启用和禁用状态:
//初始设置“Save”菜单项为禁用状态。 saveItem.setEnabled(false);
❖ 快捷键和加速器 快捷键显示为带有下划线的字母,加速器则显示为菜单项
旁边的组合键。:
//设置菜单的快捷键。 ('F'); //设置“Exit”菜单项的快捷键为“T”。 JMenuItem exitItem = new JMenuItem("Exit", 'T'); //设置“Exit”菜单项的加速器为“Ctrl+T”。 exitItem.setAccelerator(KeyStroke.getKeyStroke(
setJMenuBar(menuBar); //(b)创建“File”菜单、“Edit”菜单和“View”菜单。 JMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
JMenu viewMenu = new JMenu("View"); //(b)创建子菜单。 JMenu optionMenu = new JMenu("Option");
2020/12/10
5
使用菜单组件的例子
); m2.add(“复制”); Menu m21 = new Menu(“颜色”); m21.add(“前景色”); m21.add(“背景色”); m21.addActionListener(this);
m2.add(m21);
2020/12/10
3
菜单组件
• java.awt.MenuBar类
– MenuBar() – setMenuBar(菜单对象)
• java.awt.Menu类 • java.awt.MenuItem类 • java.awt.CheckboxMenuItem类 • java.awt.PopupMenu类
MenuComponent
MenuBar
MenuItem
2020/12/10
CheckboxMenuItem
Menu PopupMenu 4
使用菜单组件的例子
import java.awt.*; import java.awt.event.*; public class Exam5_19 extends Frame implements ActionListener, ItemListener {
KeyEvent.VK_T, InputEvent.CTRL_MASK));
2020/12/10
7.4.8菜单以及弹出式菜单
典型的菜单:
2020/12/10
1
❖ 创建菜单 四个步骤:创建菜单栏、创建菜单以及子菜单、创建菜单
项,并将菜单项加入到子菜单或菜单中,将子菜单加入到菜单 中,将菜单加入到菜单栏中。
//(a)创建菜单栏,并将菜单栏加入到框架中。 JMenuBar menuBar = new JMenuBar();
text.setText(“状态改变”); } public void actionPerformed(ActionEvent e) {
text.setText(e.getActionCommand()); if (e.getActionCommand() == “退出”)
System.exit(0); } }
public static void main(String args[]) { Exam5_19 myMenu = new Exam5_19(); myMenu.init(); myMenu.setVisible(true);
} public void itemStateChanged(ItemEvent e) {