Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第10章

上传人:E**** 文档编号:89399441 上传时间:2019-05-24 格式:PPT 页数:36 大小:167KB
返回 下载 相关 举报
Java程序设计基础 教学课件 ppt 作者  万忠 苏飞 第10章_第1页
第1页 / 共36页
Java程序设计基础 教学课件 ppt 作者  万忠 苏飞 第10章_第2页
第2页 / 共36页
Java程序设计基础 教学课件 ppt 作者  万忠 苏飞 第10章_第3页
第3页 / 共36页
Java程序设计基础 教学课件 ppt 作者  万忠 苏飞 第10章_第4页
第4页 / 共36页
Java程序设计基础 教学课件 ppt 作者  万忠 苏飞 第10章_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第10章》由会员分享,可在线阅读,更多相关《Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第10章(36页珍藏版)》请在金锄头文库上搜索。

1、第 10 章 I/O 流 和 集 合 类,10.1 I/O 基 类 10.2 控 制 台 I/O 10.3 文 件 I/O 10.4 对 象 流 10.5 链 表 和 Vector 10.6 集 合 类 框 架,10.1 I/O 基 类,10.1.1 字节流基类 InputStream和OutputSream是所有字节流的超类,并且Java中每一种流的基本功能依赖于基本类InputStream和OutputStream。这两个类是抽象类,不能直接使用 。,10.1.2 字符流基类 Reader和Writer是字符流的抽象超类。Reader为读取器定义了抽象API和部分实现,读取器读取16位字符

2、的流;Writer为写出器提供抽象API和部分实现,写出器写16位字符的流。Reader和Writer的子类实现了对字符执行特殊操作的各种字符流。,10.2 控 制 台 I/O,SDK的lang包中定义了java.lang.System类,java使用这个类中定义的三个静态变量支持控制台的输入输出: System.out是一个PrintStream类型的对象(PrintStream是OutputStream类的子类),out对象表示应用程序的终端窗口,可以使用print或println方法把要输出的内容送到显示器输出。, System.in引用一个InputStream子类的对象,in对象表示

3、用户键盘,可以使用read方法从键盘输入字符。 System.err是一个PrintStream对象,能够把错误信息输出到显示器。,10.3 文 件 I/O,10.3.1 文件 Java语言使用java.io包中的File类来表示文件。文件类包括三个构造方法: public File(String path):如果path是实际存在的路径,则该File对象表示目录;如果path是文件名,则该File对象表示文件。, public File(String path,String name):path是路径名,name是文件名。 public File(File dir,String name):

4、dir是路径名,name是文件名。,10.3.2 文件I/O流 InputStream的子类FileInputStream类用来打开一个输入文件,OutputStream的子类FileOutputStream类用来打开一个输出文件。建立文件流对象时可以使用文件对象作参数,也可以使用文件名字符串作参数,例如:,FileInputStream in=new FileInputStream(myFile); /建立文件输入流 FileOutputStream out=new FileOutputStream(myFile); /建立文件输出流,10.3.3 缓冲区流 缓冲区流不是节点流,而是处理流,

5、需要和节点流同时使用。字节缓冲区流包括BufferedInputStream和BufferedOutputStream两个类。使用它们与文件流连接来对文件对象进行输入输出。 如果缓冲区已满,就不能再写入数据,这时程序就会被阻塞。有时也要使用flush( )方法人为地将尚未填满的缓冲区中的数据送出。,10.3.4 数据输入输出流 文件流和缓冲区流的处理对象是字节或字节数组,利用数据输入输出流可以实现对文件的不同数据类型的读写。字节流DataInputStream和DataOutputStream定义了一种高级的数据输入输出方式,除了可以输入输出字节和字节数组,还可以对int、float、bool

6、ean等基本数据类型进行输入输出。,10.3.5 随机存取文件 对于InputStream和OutputStream来说,它们的实例都是顺序访问流,即只能对文件进行顺序读写。随机访问文件则允许对文件内容进行随机读写。在Java中,类RandomAccessFile 提供了随机访问文件的方法。,类包括以下两个构造方法。 RandomAccessFile (String name,String mode) RandomAccessFile (File file,String mode) RandomAccessFile raf = new RandomAccessFile(“file1.txt“,

7、“r“); /只读方式 RandomAccessFile raf = new RandomAccessFile(“file2.txt“, “rw“); /可读写方式,随机访问文件之所以允许对文件内容进行随机读写,是因为使用了文件指针。对文件指针的操作包括以下3个方法: long getFilePointer( ): 返回当前的文件指针的位置。 void seek(long pos): 移动文件指针到指定的位置(pos)。 int skipBytes(int n): 使文件指针向前移动指定的n个字节。,10.4 对 象 流,将一个对象存放到某种类型的永久存储器上称为保持。保存对象的过程也称为对象

8、的串行化。 当一个类实现java.io.Serializable接口时,其对象才能够被串行化。该接口中没有定义任何要求实现的方法,只起到一个标志的作用,表示一个类的对象能够被串行化。,要实现对象的串行化,需要使用java.io包中定义的ObjectOutputStream进行对象的输出,ObjectInputStream类进行对象的输入。 对象输入输出流是处理流,要封装节点流才能对对象进行读写。,10.5 链 表 和 Vector,数据的存储类型可以分为标量类型和聚集类型:存储单个值的类型称为标量类型,基本类型都是标量类型,基本类型的变量只能存储一个数值;存储多个值的类型称为聚集类型,类和数组

9、都是聚集类型。,聚集类型可分为同类聚集和异类聚集:同类聚集的类型中只能包含相同类型的数据;异类聚集类型中可以包含不同类型的数据,如类的成员变量就可以是不同类型。 容器是提供存储功能的同类聚集的总称。,10.5.1 链表 链表可以看作是可以根据需要为新元素分配空间的数组,也就是说链表的大小是可变的。链表中的元素不是采用顺序存储的方式,而是将各个元素分散存储 。,图10-4 链表,链表的元素称为节点。 节点的域可按下列形式定义: class Node public Object data; public Node next; ,链表对象只保存第一个节点的位置,所以只有该节点类型的域head: pu

10、blic List private Node head; 当head的值为null时,表示这个链表中没有节点,是一个空链表。,得链表长度的size方法 取得节点数据的getFirst、getLast、get方法 数据的addFirst(Object 0)、addLast(Object 0)、add(int index,Object element)方法 删除某个节点的数据的removeFirst( )、removeLast( )、remove(int index)方法,方法contains(Object o),其用途是查找某个数据是否保存在链表中 indexOf(Object o)和lastI

11、ndexOf(Object o), 这两个方法在链表中存在和参数相同的数据域时返回该数据域所在节点的index值 在java.util包中实现了链表类LinkedList,可以直接使用该类进行编程,在LinkedList类中还有特殊的方法iterator( ),该方法用来返回一个Iterator对象,Iterator接口称为遍历器,各种集合类都对其有不同的实现,其中都实现了Iterator接口中定义的三个抽象方法。, boolean hasNext( ):如果遍历器对象中还有更多的元素,则返回true。 Object next( ):返回遍历器对象当前遍历的元素,并指向下一个元素。 void

12、remove( ):删除遍历器对象中当前正在遍历的元素。,可以看到使用遍历器对象对链表进行遍历是非常方便的。在需要时还可以使用remove方法删除当前正在遍历的元素。 堆栈是先进后出协议的容器。堆栈只有一个访问点,称为栈顶,另一端称为栈底。 特点称为先进后出。,java.util包中也定义了Stack类,用来实现堆栈结构。Stack继承自vector,可以说是用vector实现的,其主要方法包括: boolean empty( ) 测试堆栈是否为空。 Object peek( ) 得到栈顶节点的数据域。, Object pop( ) 弹出(删除)栈顶的节点。 Object push(Objec

13、t item) 将参数添加入栈顶。 int search(Object o) 如果堆栈中含有与参数相同的数据域的节点,则返回从1开始的节点的位置坐标index,否则返回1。 队列是使用先进后出协议的容器。队列有两个访问点,队头和队尾。,10.5.2 Vector类 java.util.Vector类称为矢量表,是类似于数组的顺序存储的数据结构,相对于数组,其最大的特点是长度可变。 Vector是大小可变的数组,类中定义有两个变量:int elementCount表示当前矢量链表中的元素数,int capacityInctrment表示Vector每次需要追加长度时,追加的元素个数。,Vecto

14、r类的构造函数如下。 public Vector( ):构造一个空矢量。 public Vector(int initialCapacity):构造一个初始储存容量为initialCapacity的空矢量。 public Vector(int initialCapacity,int capacityInctrment):构造初始储存容量为initial Capacity,并且每次增加capacityInctrment个空间的空矢量。,主要方法。 public final int size( ):返回矢量中元素的数量,并不是矢量的容量。 public final boolean contains

15、(Object obj):如果参数对象是在Vector中存在返回真。 public final int indexOf (Object obj):返回参数对象在Vector中的索引值,如果对象obj未找到则返回1。, public final synchronized Object elementAt (int index):返回参数索引值指定的Vector中的元素。 public final synchronized void setElementAt (Object obj, int index):指定使用参数对象obj替换Vector中索引为index的元素。 public final

16、synchronized void removeElementAt (int index):删除Vector中指定索引为参数index的元素。, public final synchronized void addElement (Object obj):将参数对象添加为矢量Vector的最后一个元素。 public final synchronized void insertElementAt (Object obj,int index):将参数对象obj插入到Vector中指定索引index位置,向后移动具有更大索引的所有元素。 public Iterator iterator( )返回一个该Vector的遍历器对象。,10.6 集 合 类 框 架,集合(collection)是一个将多个元素组合进单一单元的对象。,收集类实现3个基本的接口,其中List表示对象链表,它的结构特点决定了List保存的节点是有序的、其值是可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号