资源预览内容
第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
第9页 / 共39页
第10页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
0,Java的基本输入与输出,1,本章目标,理解相关基本概念。使用键盘进行单个字符、字符串、数值类型数据的输入。,2,Java的基本输入与输出方式,字符界面方式(本章内容)图形界面方式(以后介绍),3,一、Java中流的概念,日常生活中的流可以被理解为一根“导管”。导管的特点:单向性。,日常生活中所说的流:,1、什么是流?“导管”中的流类似于Java语言中的IO流。Java语言中,流是程序在输入输出过程中流动的数据序列。流有两个端口:一端与数据源点(当输入数据时)或数据终点(当输出数据时)相连,另一端与程序相连。,4,2、流的示意图,当程序要把结果输送到数据终点时,必须在程序和数据终点之间连接建立输出流。,当程序要从数据源点获得数据时,必须在程序和数据源之间建立输入流。,5,3、流的分类,根据流中数据传输的方向,将流分为:输入流:从键盘或磁盘文件流向程序的数据流,为程序提供输入信息。输出流:从程序流向显示器、打印机、磁盘文件的数据流,实现程序的输出功能。根据流中的数据格式,将流分为:字符流:以字符为传输单位;字节流:以字节为传输单位;,6,二、Java中提供的IO流,为了便于流的处理,Java在Java.io包中提供了丰富的类,每个类代表了一种特定的输入或输出流。利用输入流类可以建立输入流对象,利用输入数据流类提供的方法可以从输入设备将数据读入到程序中;利用输出流类可以建立输出流对象,利用输出数据流类提供的方法可以将程序产生的数据写到输出设备上;,7,1、Java中流类的总图如下:,8,2、字节流类,字节流以字节方式从流中读取或向流中写入数据,字节流类有:输入流类InputStream及其子类输出流类OutputStream及其子类InputStream和OutputStream分别是所有字节输入类和字节输出类流的祖先。InputStream和OutputStream为抽象类,不能用来直接创建流,只能用它们的子类创建字节输入或字节输出流。,9,字节流类的继承图:,10,字节流类中的几个重要方法,read()方法:InputStream类中的静态方法,用于从输入字节流中读出一个字节。print()方法:OutputStream类的子类FilterOutputStream的子类PrintStream的方法。用于输出不同类型的数据信息。println()方法:和print()方法唯一的区别是println()方法输出对象之后附带一个回车,下一次将在下一行中输出。,11,三、标准输入/输出,标准输入/输出;指面向标准输入设备和标准输出设备的输入/输出。标准输入设备:现阶段默认为键盘。标准输出设备:现阶段默认为显示器。,12,1、System类,System类是Java语言中一个功能强大、非常有用的类,它提供了标准输入与输出、运行时的系统信息等重要工具,是属于java.lang包的一个终止类。 System类不能创建对象,即System类的属性和方法都是静态的,引用时要以System为前缀。 in、out、err为System类的三个静态属性。,13,Java系统内预定义的标准IO流定义格式,public final class java.lang.System extends java.lang.object public static InputStream in; public static PrintStream out; public static PrintStream err; ,14, System.in:标准输入流,默认指键盘,用于程序输入,通常读取用户从键盘输入的信息。 System.out:标准输出流,默认指屏幕,用于程序输出,通常向用户显示信息。 System.err:标准错误流,默认指屏幕,用于向用户显示出错信息。,Java系统预先定义的标准IO流,15,2 标准输出流,标准输出流使用System类的静态属性out的print()和println()方法提供向屏幕输出不同类型数据的功能。实现格式如下: System.out.print() System.out.println() 注意:out为OutputStream类的子类FilterOutputStream的子类PrintStream创建的对象,而print()和println()方法为PrintStream类的成员方法。,16,3 标准输入流,标准输入流使用System类的静态属性in的read()方法从键盘读取一个字节到程序。实现格式如下: System.in.read() 功能:执行该方法时,等待用户击键,当击一次键后,该方法从输入流中读出一个字节(所键入字符的ASCII码),然后将该字符的ASCII码换成Unicode编码,返回值为Unicode编码的int型数。按回车输入结束。,17,说明:,in是System类的一个属性,代表系统标准输入(键盘)。In属性是InputStream类的对象, InputStream类中的方法read()用于接受从标准输入设备输入的字符。执行System.in.read()会得到输入字符的unicode编码值。在java中,当进行键盘输入时要处理可能发生的异常现象,因此程序设计时使用的System.in.read()语句必须包含在try语句块中,而且try语句块的后面应该有一个可以接收IOException异常的catch语句块。,18,举例1,编写程序:从键盘输入一个字符,将字符的编码值和字符本身输出到屏幕上。提示: 注意read()方法的返回类型。 注意read()方法只能读取一个字符。 注意read()方法要进行异常处理。,19,import java.io.*;class Input_Exp1public static void main(String args) int n=-1; char ch= ; System.out.println(请输入一个字符:);,20,try n=System.in.read(); ch=(char)n; System.out.println(“输入字符的unicode编码值为:+n);System.out.println(输入的字符为+ch); catch(IOException e)System.out.println(输入的不是字符,输入有误!);,21,举例2,编写程序:从键盘输入一个0到9的数字,将数字字符的编码值和字符本身输出到屏幕上,如果输入的不是0到9的数字,则给出出错提示信息。提示: 注意read()方法的使用。 需要人工抛出异常。,22,import java.io.*;class Input_Exp2 public static void main(String args) int n=-1; char ch= ; boolean f=false; System.out.println(请输入一个数字:);,23,try n=System.in.read(); ch=(char)n; if(n57) throw new IOException(); System.out.println(输入数字的unicode编码值为:+n); System.out.println(输入的数字为+ch); ,24,catch(IOException e) System.out.println(输入的+ch+不是数字,输入有误!); ,25,四、InputStream和OutputStream,InputStream和OutputStream是所在字节输入输出类的根类。这两个类提供了一些流输入输出使用的最基本的方法。主要方法有:,26,read():从流中读入数据。skip():跳过流中若干字节数。available():返回流中可用字节数。mark():在流中标记一个位置。reset():返回标记过的位置。markSupported():是否支持标记和复位操作。close():关闭流。,1、InputStream类的主要方法,三种从流中读数据的方法:int read():从输入流当前位置读一个字节的数据并返回,没有读到数据时返回-1int read(byte b ):读多个字节到数组中int read(byte b,int off,int len);,27,2、 OutputStream类的方法,write(int b):将一个整数输出到流中。write(byte b):将数组中的数据输出到流中。write(byte b, int off,int len):将数组b中从off指定的位置开始len长度的数据输出到流中。flush():将缓冲区中的数据强制送出。close():关闭流。,28,五 字符流类,使用字节流输入字符串较复杂,使用字符流处理字符串的输入,相对于字节流来讲,较为方便。 Java字符流类主要用来读写Unicode字符。,29,主要字符流类及其子类,字符流类层次的顶层是Reader类和Writer类。 Reader类: 用来以字符方式从流中读取数据。其中包含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能。Reader类也是一个抽象类,实际应用中创建的对象是Reader类的某个子类的对象,通过对象与外设数据源相连。,30,Writer类: 用来以字符方式向输出流中写入数据。其中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能。 Writer类也是一个抽象类,实际应用中创建的对象是Writer类的某个子类的对象,通过对象与外设数据源相连。,31,Reader类和Writer类的常用子类:,Reader类: BufferedReader类:把字符流中的字符读入指定的缓冲区。 CharArrayReader类:允许使用字符数组作为数据流。 FilterReader类:允许读取过滤的的字符数据流。 InputStreamReader类:读取字节数据并将其转化为字符。 Writer类 : BufferedWriter类:将数据缓冲区的字符写到输出流 CharArrayWriter类:将字符数组缓冲区的字符写到输出流。 FilterWriter类:将过滤的字符写到输出流。 OutputStreamWriter类:将字符转化为字节写到输出流。,32,BufferedReader类:,该类可以对任何种类的输入流进行带缓冲区的封装以实现性能的改善。该类的构造函数以Reader所有子类对象为参数,将从数据源读取的多个数据可以先暂存放到缓冲区中,即将Unicode字符流包装(转换)成缓冲流,使输入速度更快。例如: BufferedReader bufin=new BufferedReader(new InputStreamReader(System.in) 该语句相当于用BufferedReader 类创建了一个缓冲过滤流对象bufin。 BufferedReader类的readline()方法每次从输入流中读取一行数据,返回一个字符串。例如: String sname=bufin.readline(); 该语句相当于从缓冲过滤流对象bufin中读取成批的数据,然后赋值给字符串变量sname。而不是从数据源中一个一个读取数据。,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号