Java程序设计案例教程 第2版 习题答案 习题9_第1页
Java程序设计案例教程 第2版 习题答案 习题9_第2页
Java程序设计案例教程 第2版 习题答案 习题9_第3页
Java程序设计案例教程 第2版 习题答案 习题9_第4页
Java程序设计案例教程 第2版 习题答案 习题9_第5页
全文预览已结束

下载本文档

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

文档简介

【习题9】一、选择题CCABC二、填空题1、流2、输入流输出流3、字节流字符流4、inouterr三、简答题1、什么是输入/输出流?字节流和字符流有什么区别?答:根据数据流的方向,可以将流分为输入流和输出流。我们可以将数据流想象成水流,一条管道连接了内存和外设(磁盘文件或打印机),数据就象管道中的水流。从其他设备读取数据,此时流入内存的数据序列就是输入流;从内存写入数据到外部设备的数据序列出就是输出流。根据数据流中处理的数据,可以将流分为字节流和字符流,其中字节流用来处理没有进行加工的原始数据(即二进制字节数据),字符流是经过编码的符合某种格式规定的数据(即文本文件数据)。2、过滤流BufferedInputStream类与字节流FileInputStream类的关系是什么?答:FileInputStream类和FileOutputStream类读写数据是以字节为单位进行的,文件流的利用率不高,而BufferedInputStream类和BufferedOutputStream类在字节输入/输出流的基础上实现了带缓冲的过滤流,采用一个内部缓冲区数组缓存数据,从而提高磁盘的读写速度。3、对象串行化的作用是什么?对象串行化是如何实现的?答:使用对象输入输出流实现对象序列化,可以直接存取对象,将对象存入一个数据流称为对象的串行化(Serialization,也称序列化),而从一个数据流将对象读出来的过程被称为反串行化。串行化和反串行化的过程包括:(1)声明可串行化的类通过实现java.io包的Serializable接口,声明一个类的实例是可串行化的。Serializable接口中没有定义任何方法,它的作用仅仅是一个标识,用于标识实现了该接口的类的实例是可以被串行化的。(2)串行化对象串行化一个对象,必须要与一定的输入/输出流相连,通过输出流对象,将对象的当前在状态保存下来,然后可以通过输入流对象将对象的数据进行恢复。在java.io包中,提供了专门的保存和读取串行化对象的类,分别为ObjectInputStream类和ObjectOutputStream类。使用ObjectOutputStream类的writeObject()方法实现对象的串行化,即直接将对象信息保存到输出流中,使用ObjectInputStream类的ReadObject()方法可以实现对象的反串行化。四、编程题1、d:\article.txt这个文件是一篇英文短文,编写一个程序,统计该文件中英文字母的个数,并将其写入另一个文本文件中。importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;publicclassEx9_1{ publicstaticvoidmain(String[]args){ FileReaderfr=null; charc; intch=0; try{ fr=newFileReader("d:/article.txt"); intb; while((b=fr.read())!=-1){ c=(char)b; if(c>='a'&&c<='z'||c>='A'&&c<='Z'){ ch++; } } }catch(FileNotFoundExceptione){ System.out.println("文件不存在!"); }catch(IOExceptione){ System.out.println("输入输出异常!"); }finally{ try{ fr.close(); }catch(IOExceptione){ System.out.println("输入输出异常!"); } } System.out.println("英文字母个数:"+ch); }}2、定义学生类,包含学生的基本信息(包括学号、姓名和考试成绩),键盘接收学生信息,并将学生信息保存到文件studentscore.obj中。importjava.io.Serializable;publicclassStudentimplementsSerializable{ privateStringid; privateStringname; privateintscore; publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicintgetScore(){ returnscore; } publicvoidsetScore(intscore){ this.score=score; } publicStudent(Stringid,Stringname,intscore){ this.id=id; =name; this.score=score; }}importjava.io.BufferedWriter;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.util.Scanner;publicclassStudentScore{ publicstaticvoidmain(String[]args){ Stringid,name; intscore; Scannersc=newScanner(System.in); System.out.println("请输入学号:"); id=sc.next(); System.out.println("请输入姓名:"); name=sc.next(); System.out.println("请输入成绩:"); score=sc.nextInt(); Students=newStudent(id,name,score); try{ FileOutputStreamfw=newFileOutputStream("D:/studentscore.obj"); ObjectOutputStreamoos=newObjectOutputStream(fw); oos.writeObject(s); oos.close(); FileInputStreamfr=newFileInputStream("D:/studentscore.obj"); ObjectInputStreamois=newObjectInputStream(fr); Students1=(Student)ois.readObject(); System.out.println(s1.getId()+","+s1.getName()+"," +

温馨提示

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

评论

0/150

提交评论