2019-2020年人教统编jAVA2程序设计基础第十章课件
合集下载
Java基础第10章课件

10.1 网络通信协议
让IT教学更简单,让IT学习更有效
– 通过计算机网络可以使多台计算机实现连接,位于同一个网络中 的计算机在进行连接和通信时需要遵守一定的规则 – 在计算机网络中,这些连接和通信的规则被称为网络通信协议, 它对数据的传输格式、传输速率、传输步骤等做了统一规定,通 信双方必须同时遵守才能完成数据交换 – 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议 (Transmission Control Protocal/Internet Protoal传输控制协议/英
让IT教学更简单,让IT学习更有效
– 在创建发送端和接收端的DatagramSocket对象时,使用的构造方法
也有所不同,DatagramSocket类中常用的构造方法如下所示:
DatagramSocket() DatagramSocket(int port) DatagramSocket(int port,InetAddress addr)
该方法需要实现两个功能: – 第一个是接收用户填写程序监听的端口号 – 第二个是接收消息,这个功能封装在startListen()方法中,为了避免在 接收消息时AWT线程发生阻塞,需要在startListen()方法中开启一个新 的线程,把接收消息的实现放在新线程的run()方法中
10.2 UDP 通信
10.2 UDP 通信
• 10.2.1 DatagramPacket
– DatagramPacket类中的常用方法
让IT教学更简单,让IT学习更有效
10.2 UDP 通信
• 10.2.2 DatagramSocket
让IT教学更简单,让IT学习更有效
– DatagramSocket类的作用就类似于码头,使用这个类的实例对象就
Java基础第10章课件

支持回推操作的数据流中的方法:
1. boolean markSupported()
用于指示数据流是否支持回推操作,当 一个数据流支持mark( )和reset( )方法时 返回true,反之返回false。
2. void mark(int markarea)
用于标记数据流的当前位置。
3. void reset( )
3. int available( )
返回可以从数据流中读取的字节数。
4. long skip(long l)
跳过数据流中指定数量的字节不读, 返回值表示实际跳过的字节数。
对数据流中字节的读取通常是按从 头到尾顺序进行的,如果需要以反 方向读取,则需要用“回推”(push back)的方法实现。
Collection
接口
+add(element:Object): boolean
+remove(element:Object): boolean +contains(element:Object): boolean +iterator(element:Object): boolean
接口
Set
List
1. 一种含有重复元素的、有序的集合,也 称序列;
2. 用户可以控制向序列中插入元素的位置 ,并可以按元素的位序(加入顺序)来 访问它们,位序从0开始。
3. ArrayList类实现了List接口。
ArrayList h = new ArrayList();
h 0x4a678b
0x4a678b
1st
类
HashSet ArrayList Vector
Set接口
1. 一种不包含重复元素的、有序的集和, 称为集合;
《JAVA语言程序设计教程》课件第10章

(1) 创建一个实现Runnable接口的类,在类中实现run() 方法。
(2) 创建该类的对象,将该对象传递给Thread(Runnable target)作为实参创建线程对象。
(3) 线程对象调用start()方法启动目标线程。 【例10-3】 实现Runnable接口创建线程,该线程生成5个 随机数,并在每生成一个随机数之后休眠1秒钟。
2. Thread() Thread的构造函数,用于构造一个名为Thread-加上一个数 字的线程,例如Thread-0、Thread-1、Thread-2…等。 3. start() 线程对象通过调用start方法启动线程,使它从新建状态进 入到就绪状态排队等候CPU时间片,一旦获得CPU资源,就执 行线程内的run()方法。注意,如果试图使用start方法再次启动 一个已经就绪的线程,那么就会产生一个 IllegalThreadStateException异常。
class CreateNumber implements Runnable{ protected int num; public void run() { for(int i=1;i<=5;i++) { num=(int)(Math.random()*100); System.out.println(num); try{Thread.sleep(1000);} catch(InterruptedException e){} } }
10.1.3 线程的状态
与自然界的任何事物一样,一个线程从创建到结束也经 历了一个完整的生命周期,在这个周期中,线程分别呈现出五 种不同的状态:新建、就绪、运行、中断(阻塞)、死亡。线程 状态及其生命周期如图10.4所示。
图10.4 线程的生命周期
Java实用PPT课件第10章

类,因此所有的轻组件也都是容器。 而 JFrame 、 JApplet 、 JDialog 都 是 重 组 件 , 即 有 同 位 体 的 组 件 , 这 样 窗 口
(JFrame)、对话框(JDialog)、小应用程序(Java Applet)可以和操作系统交互 信息。轻组件必须在这些容器中绘制自己,习惯上称这些容器为SWING的底层容器。
下面的例10-2中有一个含有菜单的窗口(效果如图10.3所示)。
10 2019/8/4
10.4 布局设计
当把组件添加到容器中时,希望控制组件在容器 中的位置,这就需要学习布局设计的知识。
本 节 将 介 绍 java.awt 包 中 的 FlowLayout 、 BorderLayout 、 CardLayout 、 GridLayout 布 局 类 和 java.swing.border包中的BoxLayout布局类。
◆ public void setAccelerator(KeyStroke keyStroke) 为菜单项设置 快捷键。
为了向该方法的参数传递一个KeyStroke对象,可以使用KeyStroke 类的类方法public static KeyStroke getKeyStroke(char keyChar)返回 一个KeyStroke对象;也可以使用KeyStroke类的类方法public static KeyStroke getKeyStroke(int keyCode,int modifiers) 返 回 一 个
◆public void setSize(int width,int height) 设置窗口的大小,在屏幕出现默认位置是(0,0)。 ◆public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。 ◆public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。 ◆public void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的 关闭图标后,程序会做出怎样的处理。其中的参数operation取下列有效值:
(JFrame)、对话框(JDialog)、小应用程序(Java Applet)可以和操作系统交互 信息。轻组件必须在这些容器中绘制自己,习惯上称这些容器为SWING的底层容器。
下面的例10-2中有一个含有菜单的窗口(效果如图10.3所示)。
10 2019/8/4
10.4 布局设计
当把组件添加到容器中时,希望控制组件在容器 中的位置,这就需要学习布局设计的知识。
本 节 将 介 绍 java.awt 包 中 的 FlowLayout 、 BorderLayout 、 CardLayout 、 GridLayout 布 局 类 和 java.swing.border包中的BoxLayout布局类。
◆ public void setAccelerator(KeyStroke keyStroke) 为菜单项设置 快捷键。
为了向该方法的参数传递一个KeyStroke对象,可以使用KeyStroke 类的类方法public static KeyStroke getKeyStroke(char keyChar)返回 一个KeyStroke对象;也可以使用KeyStroke类的类方法public static KeyStroke getKeyStroke(int keyCode,int modifiers) 返 回 一 个
◆public void setSize(int width,int height) 设置窗口的大小,在屏幕出现默认位置是(0,0)。 ◆public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。 ◆public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。 ◆public void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的 关闭图标后,程序会做出怎样的处理。其中的参数operation取下列有效值:
Java程序设计案例教程 第2版 第10章 图形用户界面设计

JFrame frame = new JFrame (“Jpanel应用举例");
// 与AWT版本几乎完全相同
JPanel panel = new JPanel();
JButton button = new JButton(“面板上的按钮");
panel.setBorder(BorderFactory.createTitleBorder(“JPanel的边界”);
Java程序设计案例教程
幻灯片 10,共33页
10
常见的布局管理器
东南西北中
FlowLayout 位置改变,大小不变
BorderLayout 位置不变,大小改变
三行二列
GridLayout 位置不变,大小改变
Java程序设计案例教程
幻灯片 11,共33页
11
FlowLayout
❖ 是最简单的一种布局管理器 ❖ 将组件一个接一个地从左到右,从上到下地依次排列 ❖ 是Panel,JPanel和Applet的默认布局管理器
Java程序设计案例教程
幻不能独立存在,必须依赖于其它容器 ❖ 作为一种中间层容器,普通容器可以容纳其它容器或组件 ❖ 在Swing中,这类容器有
▪ JPanel ▪ JScrollPane ▪ JSplitPane ▪ JTablePane ▪ JToolBar
class FlowLayout_Example {
Java程序设计案例教程
幻灯片 9,共33页
9
10.3 布局管理器
❖ 布局管理的方式
▪ 绝对位置和绝对大小 ▪ 相对位置和相对大小 ▪ 采用相对位置和大小会使外观更加美观
❖ 布局管理器
▪ 每种容器都有一个默认的布局管理器 ▪ 也可以为窗口指定新的布局管理器。 ▪ 常用的布局管理器有
Java2第10章PPT教学课件

byte b[]=new byte[fi.available()]; //创建byte类型的数组b
fi.read(b); //将图形文件读入b数组
fo.write(b); //将b数组里的数据写入新文件my_icon.gif
System.out.println("文件已被拷贝并被更名");
fi.close();
第10章
Java的输入输出 与文件处理
2020/12/11
1
通过本章的学习,主要掌握以下知识点:
流的概念 基本的输入输出流 标准输入输出 Reader和Writer流类 对文件的随机访问
本章的重点:
流的应用
本章的难点:
流的应用
2020/12/11
2
10.1 Java的输入输出类库
利用java.io类库中所提供的输入输出 类,Java程序不但可以很方便地实现多种 输入输出操作,而且还可实现对复杂的文 件与目录的管理。
2020/12/11
6
10.2 使用InputStream和OutputStream流类
InputStream 和 OutputStream 类 是 Java 里 用来处理以位(bit)为主的流,也就是说,除了 纯文本文件之外,它们也可用来处理二进制文件 (binary file)的数据。
2020/12/11
fo.close();
2020}/12/11
功能说明
从输入流中的当前位置读入一个字节(8bit)的二进制数据,然 后以此数据为低位字节,配上8个全0的高位字节合成一个16 位的整型量(0~255)返回给调用此方法的语句,若输入流中 的当前位置没有数据,则返回-1。
从输入流中的当前位置连续读入多个字节保存在数组b[]中, 同时返回所读到的字节数。
java学习第10章PPT教学课件

由调度程序调用,当run()方法返回时, 该线程停止
使调用它的线程立即停止执行
使线程睡眠n毫秒,n毫秒后,线程可以 再次运行
使线程挂起,暂停运行Not Runnable
恢复挂起的线程,使处于可运行状态 Runnable
将CPU控制权主动移交到下一个可运行 线程
2、Thread类的主要方法
setName(String) getName() getPriority() setPriority(int) join()
赋予线程一个名字
取得由setName()方法设置的线程名字的 字符串
返回线程优先级
设置线程优先级
当前线程等待调用该方法的线程结束后, 再往下执行
setDaemon(boole an )
设置该线程是daemon线程还是用户线程, Daemon线程也称服务线程,通常编 成无限循环,在后台持续运行。
例10-1 直接继承Thread类实现多线程
第10章 多线程机制
1.1 Java线程的概念 1.2 Java多线程编程方法 1.3 线程的控制 1.4 线程资源的同步处理
1.多进程
多进程的缺点: • 进程切换开销大; • 进程间的通信很不方便。
2.多线程
• 多线程则指的是在单个程序中可以同时运行多个 不同的线程,执行不同的任务
• 线程切换的开销小 。
例10-2 计数按钮的设计
import java.applet.*; import java.awt.*; class countbutton extends Button implements Runnable {
int count=0; public countbutton(String s) { super(s); } public void run() {
使调用它的线程立即停止执行
使线程睡眠n毫秒,n毫秒后,线程可以 再次运行
使线程挂起,暂停运行Not Runnable
恢复挂起的线程,使处于可运行状态 Runnable
将CPU控制权主动移交到下一个可运行 线程
2、Thread类的主要方法
setName(String) getName() getPriority() setPriority(int) join()
赋予线程一个名字
取得由setName()方法设置的线程名字的 字符串
返回线程优先级
设置线程优先级
当前线程等待调用该方法的线程结束后, 再往下执行
setDaemon(boole an )
设置该线程是daemon线程还是用户线程, Daemon线程也称服务线程,通常编 成无限循环,在后台持续运行。
例10-1 直接继承Thread类实现多线程
第10章 多线程机制
1.1 Java线程的概念 1.2 Java多线程编程方法 1.3 线程的控制 1.4 线程资源的同步处理
1.多进程
多进程的缺点: • 进程切换开销大; • 进程间的通信很不方便。
2.多线程
• 多线程则指的是在单个程序中可以同时运行多个 不同的线程,执行不同的任务
• 线程切换的开销小 。
例10-2 计数按钮的设计
import java.applet.*; import java.awt.*; class countbutton extends Button implements Runnable {
int count=0; public countbutton(String s) { super(s); } public void run() {
jAVA2程序设计基础第十章

boolean delete()
void deleteonExit() boolean mkdir() boolean mkdirs() boolean renameTo(File dest)
删除关联文件或目录,不能删除非空的目录
在Java虚拟机终止时删除关联文件或目录 新建一个名为所关联目录的目录 新建一个名为所关联目录的目录,关联路径中 并不存在的目录也将创建 将所关联文件更名至指定File对象关联的文件
10.3 字 节 流
InputStream/OutputStream继承体系中各子类的说明见表10.3和表10.4。 FilterInputStream和FilterOutputStream各子类的说明见表10.5和表10.6。 10.3.1 10.3.2 10.3.3 10.3.4 10.3.5 10.3.6 10.3.7 ByteArrayInputStream ByteArrayOutputStream FileInputStream FileOutputStream FilterInputStream FilterOutputStream SequenceInputStream
第10章 I/O系统
教学提示:从本章开始 ,将介绍Java中较为高级的内容 。本章介
绍Java的I/O(输入/输出)系统,主要包括文件的基本操作 , Java 中流的 概念及其应用,以及随机访问文件。学习完本章内容后,读者对Java的
I/O系统将有一个整体上的认识,并有能力实现一般的输入/输出应用。
表10.3 InputStream的子类
类 名 ByteArrayInputStrea m FileInputStream 功 能 与字节数组关联的输入流 与文件关联的输入流 构造方法参数说明 一个字节数组,作为该输入流的数据源, 内部输入缓冲区从其中获取数据 File对象、FileDescriptor对象或文件名, 其代表的文件作为该输入流的数据源, 该文件必须实际存在 一个输入流,该过滤器输入流从其中获 取数据 一个输入流,对象输入流从该输入流中 获取对象信息
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回
10.1.3 建立和删除文件
File对象中关于建立和删除文件(或目录)的方法见表10.2。
返回
表10.2 File对象建立和删除文件的方法
方法 boolean createNewFile()
File createTempFile(String prefix,String suffix) File createTempFile(String prefix, String suffix,File directory) boolean delete() void deleteonExit() boolean mkdir() boolean mkdirs()
boolean renameTo(File dest)
说明
当不存在所关联文件时,新建一个名为该关联文 件名的空文件
在系统默认的临时目录中新建一个空文件,新文 件的前缀为prefix,扩展名为suffix
在指定目录中新建一个空文件,新文件名的组成 同上
删除关联文件或目录,不能删除非空的目录
在Java虚拟机终止时删除关联文件或目录 新建一个名为所关联目录的目录
教学目标:熟悉对文件及目录的基本操作,熟悉Java I/O系统中各 个类的作用及它们之间的关系 ,掌握随机访问文件的方法 。通过上机 实践,掌握上述内容的综合应用。
10.1 文件的基本操作
对于任何程序设计语言的I/O系统来说,在对文件进行读写数据操 作(不管以何种方式进行)之前,如何找到或定位正确的文件 ( 或目 录),如何获取文件(或目录)的属性信息(如是否只读、修改时间 、文 件大小等),如何创建和删除文件 (或目录 ) ,是首先必须解决的基础 性问题。对文件(及目录) 的这些基本操作,是整个 I/O 系统的基石。 本节就先介绍Java 提供的用以协助处理文件 ( 及目录 ) 相关事务的类 File。
第10章 I/O系统
教学提示:从本章开始 ,将介绍Java中较为高级的内容 。本章介 绍Java的I/O(输入/输出)系统,主要包括文件的基本操作 , Java 中流的 概念及其应用,以及随机访问文件。学习完本章内容后,读者对Java的 I/O系统将有一个整体上的认识,并有能力实现一般的输入/输出应用。
说明 判断关联文件或目录是否可读 判断关联文件或目录是否可写 判断关联文件或目录是否存在 获取关联文件或目录的绝对路径 获取关联文件或目录的规范路径 获取关联文件或目录的名字 获取关联文件或目录的上一级目录名 获取关联文件或目录的路径名 判断关联文件名或目录名是否绝对路径 判断所关联的是否目录 判断所关联的是否文件 判断关联文件或目录是否隐藏 获取最后修改时间,距1970年1月1日0:00:00的毫秒数 获取关联文件的大小,单位字节,若所关联的是目录,则返回0 修改关联文件或目录的最后修改时间 设置关联文件或目录为只读
10.1.1 获取文件名清单
10.1.2 获取文件属性信息
10.1.3 建立和删除文件
10.1.1 获取文件名清单
类File的名字很容易让人产生误解 ,以为 File 对象代表的就是文 件,事实上并不只是如此 。File对象不仅可以与文件建立关联 ,而且 可以与目录建立关联,还可以与一组文件或目录建立关联,甚至可以 及一组文件及目录的混合体建立关联 。如果 File对象与一组文件或目 录甚至这两者的混合体相关联,可以使用该对象的list()方法获取它们 的名称列表。list()方法返回一个 String 数组,每个数组元素为一个文 件或目录的名称。
新建一个名为所关联目录的目录,关联路径中并 不存在的目录也将创建
将所关联文件更名至指定File对象关联的文件
返回
10.2 流 概 述
所谓流,是指任何可以产生数据的数据源,或任何可以接收数据的接 收端,在数据源或接收端与使用流的程序之间的是一个数据序列,其中的 数据以字节或字符为单位顺序排列 。 在往流中写入数据的一端观察,这 个流即为输出流;相反,在从流中读出数据的一端观察,这个流即为输入 流。流是有方向性的,不能往一个输入流中写数据,也不能从一个输出流 中读数据。
10.3 字 节 流
InputStream/OutputStream继承体系中各子类的说明见表10.3和表10.4。
FilterInputStream和FilterOutputStream各子类的说明见表10.5和表10.6。
10.3.1 ByteArrayInputStream 10.3.2 ByteArrayOutputStream 10.3.3 FileInputStream 10.3.4 FileOutputStream 10.3.5 FilterInputStream 10.3.6 FilterOutputStream 10.3.7 SequenceInputStream
返回
10.1.2 获取文件属性信息
File对象拥有很多获取相关联文件的属性信息的方法,它们的详 细介绍见表10.1。
返回
方法 boolean canRead() boolean canWrite() boolean exists() String getAbsolutePath() String getCanonicalPath() String getName() String getParent() String getPath() boolean isAbsolute() boolean isDirectory() boolean isFile() boolean isHidden() long lastModified() long length() Boolean setLastModified(long time) boolean setReadonly()
表10.3 InputStream的子类
类名
功能
ByteArrayInputStream 与字节数组关联的输入流
FileInpnputStream ObjectInputStream PipedInputStream SequenceInputStream