java基本输入输出.ppt

上传人:wuy****n92 文档编号:70795382 上传时间:2023-01-28 格式:PPT 页数:39 大小:284.49KB
返回 下载 相关 举报
java基本输入输出.ppt_第1页
第1页 / 共39页
java基本输入输出.ppt_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《java基本输入输出.ppt》由会员分享,可在线阅读,更多相关《java基本输入输出.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java的基本输入与输出0本章目标本章目标1理解相关基本概念。理解相关基本概念。2使用键盘进行单个字符、字符串、数值类型数据使用键盘进行单个字符、字符串、数值类型数据的输入。的输入。1Java的基本输入与输出方式1.1.字符界面方式(本章内容)字符界面方式(本章内容)2.2.图形界面方式(以后介绍)图形界面方式(以后介绍)2一、一、JavaJava中流的概念中流的概念u日常生活中的流可以被理解为一根日常生活中的流可以被理解为一根“导管导管”。u导管的特点:单向性。导管的特点:单向性。日常生活中所说的流:日常生活中所说的流:1、什么是流什么是流?u“导管导管”中的流类似于中的流类似于JavaJa

2、va语言中的语言中的IOIO流。流。uJavaJava语言中,流是程序在输入输出过程中语言中,流是程序在输入输出过程中流动的数据序列。流动的数据序列。u流流有有两两个个端端口口:一一端端与与数数据据源源点点(当当输输入入数数据据时时)或或数数据据终点(当输出数据时)相连,另一端与程序相连。终点(当输出数据时)相连,另一端与程序相连。32、流的示意图、流的示意图l当当程程序序要要把把结结果果输输送送到到数数据据终终点点时时,必必须须在在程程序序和和数数据据终终点之间连接建立输出流点之间连接建立输出流。数据源数据源ProgramA streamA streamreadsreadsProgram目标

3、目标目标目标writeswritesA streamA streamn当程序要从数据源点获得数据时,必须在程序和数据源之当程序要从数据源点获得数据时,必须在程序和数据源之间建立间建立输入流。输入流。43、流的分类、流的分类l根据流中数据传输的方向,将流分为:根据流中数据传输的方向,将流分为:输输入入流流:从从键键盘盘或或磁磁盘盘文文件件流流向向程程序序的的数数据据流流,为为程程序序提提供输入信息。供输入信息。输输出出流流:从从程程序序流流向向显显示示器器、打打印印机机、磁磁盘盘文文件件的的数数据据流流,实现程序的输出功能。实现程序的输出功能。l根据流中的数据格式,将流分为:根据流中的数据格式,

4、将流分为:字符流:以字符为传输单位;字符流:以字符为传输单位;字节流:以字节为传输单位;字节流:以字节为传输单位;5二、二、JavaJava中提供的中提供的IOIO流流l为为了了便便于于流流的的处处理理,JavaJava在在Java.ioJava.io包包中中提提供供了了丰丰富富的的类类,每个类代表了一种特定的输入或输出流。每个类代表了一种特定的输入或输出流。l利利用用输输入入流流类类可可以以建建立立输输入入流流对对象象,利利用用输输入入数数据据流流类类提提供供的方法可以从输入设备将数据读入到程序中;的方法可以从输入设备将数据读入到程序中;l利利用用输输出出流流类类可可以以建建立立输输出出流流

5、对对象象,利利用用输输出出数数据据流流类类提提供供的方法可以将程序产生的数据写到输出设备上;的方法可以将程序产生的数据写到输出设备上;6 1 1、JavaJava中流类的总图如下:中流类的总图如下:用于输入的字节用于输入的字节流流用于输出的字节用于输出的字节流流用于输入的字符用于输入的字符流类流类用于输出的字符用于输出的字符流类流类72 2、字节流类、字节流类l字字节节流流以以字字节节方方式式从从流流中中读读取取或或向向流流中中写写入入数数据据,字字节节流流类类有:有:输入流类输入流类InputStreamInputStream及其子类及其子类输出流类输出流类OutputStreamOutpu

6、tStream及其子类及其子类lInputStreamInputStream和和OutputStreamOutputStream分分别别是是所所有有字字节节输输入入类和字节输出类流的祖先。类和字节输出类流的祖先。lInputStreamInputStream和和OutputStreamOutputStream为为抽抽象象类类,不不能能用用来来直直接接创建流,只能用它们的子类创建字节输入或字节输出流。创建流,只能用它们的子类创建字节输入或字节输出流。8字节流类的继承图:字节流类的继承图:9字节流类中的几个重要方法字节流类中的几个重要方法read()方方法法:InputStream类类中中的的静静

7、态态方方法法,用用于于从从输输入入字字节节流中读出一个字节。流中读出一个字节。print()方方法法:OutputStreamOutputStream类类的的子子类类FilterOutputStream的的子类子类PrintStream的方法。用于输出不同类型的数据信息。的方法。用于输出不同类型的数据信息。println()方法:方法:和和print()print()方法唯一的区别是方法唯一的区别是println()方法输方法输出对象之后附带一个回车,下一次将在下一行中输出。出对象之后附带一个回车,下一次将在下一行中输出。10三、标准输入三、标准输入/输出输出标标准准输输入入/输输出出;指指面

8、面向向标标准准输输入入设设备备和和标标准准输输出出设设备备的输入的输入/输出。输出。标准输入设备:现阶段默认为键盘。标准输入设备:现阶段默认为键盘。标准输出设备:现阶段默认为显示器。标准输出设备:现阶段默认为显示器。111、SystemSystem类类 SystemSystem类是类是JavaJava语言中一个功能强大、非常有语言中一个功能强大、非常有用的类,它提供了标准输入与输出、运行时的系用的类,它提供了标准输入与输出、运行时的系统信息等重要工具,是属于统信息等重要工具,是属于java.langjava.lang包的一个终包的一个终止类。止类。SystemSystem类不能创建对象,即类不

9、能创建对象,即SystemSystem类的属性和类的属性和方法都是静态的,引用时要以方法都是静态的,引用时要以SystemSystem为前缀。为前缀。inin、outout、errerr为为SystemSystem类的三个静态属性。类的三个静态属性。12Java系统内预定义的标准系统内预定义的标准IO流定义格式流定义格式public final class java.lang.System extends java.lang.object public static InputStream in;public static PrintStream out;public static Print

10、Stream err;13 System.in:标标准准输输入入流流,默默认认指指键键盘盘,用用于于程程序输入,通常读取用户从键盘输入的信息。序输入,通常读取用户从键盘输入的信息。System.out:标标准准输输出出流流,默默认认指指屏屏幕幕,用用于于程序输出,通常向用户显示信息。程序输出,通常向用户显示信息。System.err:标标准准错错误误流流,默默认认指指屏屏幕幕,用用于于向向用户显示出错信息。用户显示出错信息。JavaJava系统预先定义的标准系统预先定义的标准IOIO流流142 2 标准输出流标准输出流 标标准准输输出出流流使使用用System类类的的静静态态属属性性out的的

11、print()和和println()方法提供向屏幕输出不同类型数据的功能。实现格式如下:方法提供向屏幕输出不同类型数据的功能。实现格式如下:System.out.print()System.out.println()注注意意:out为为OutputStream类类的的子子类类FilterOutputStream的的子子类类PrintStream创创建建的的对对象象,而而print()和和println()方方法为法为PrintStream类的成员方法。类的成员方法。153 标准输入流标准输入流 标标准准输输入入流流使使用用System类类的的静静态态属属性性in的的read()方方法法从从键盘

12、读取一个字节到程序。实现格式如下:键盘读取一个字节到程序。实现格式如下:System.in.read()功能:执行该方法时,等待用户击键,当击一次键后,功能:执行该方法时,等待用户击键,当击一次键后,该方法从输入流中读出一个字节(所键入字符的该方法从输入流中读出一个字节(所键入字符的ASCII码)码),然后将该字符的,然后将该字符的ASCII码换成码换成Unicode编码,返回值为编码,返回值为Unicode编码的编码的int型数。按回车输入结束。型数。按回车输入结束。16说明:说明:in是是System类的一个属性,代表系统标准输入(键盘)。类的一个属性,代表系统标准输入(键盘)。In属性是

13、属性是InputStream类的对象,类的对象,InputStream类中的方类中的方法法read()用于接受从标准输入设备输入的字符。执行用于接受从标准输入设备输入的字符。执行()会会得到输入字符的得到输入字符的unicode编码值。编码值。在在java中,当进行键盘输入时要处理可能发生的异常现象,中,当进行键盘输入时要处理可能发生的异常现象,因此程序设计时使用的因此程序设计时使用的()语句必须包含在语句必须包含在try语句块中,而语句块中,而且且try语句块的后面应该有一个可以接收语句块的后面应该有一个可以接收IOException异常异常的的catch语句块。语句块。17举例举例1编写程

14、序:从键盘输入一个字符,将字符的编码值编写程序:从键盘输入一个字符,将字符的编码值和字符本身输出到屏幕上。和字符本身输出到屏幕上。提示:提示:注意注意read()方法的返回类型。方法的返回类型。注意注意read()方法只能读取一个字符。方法只能读取一个字符。注意注意read()方法要进行异常处理。方法要进行异常处理。18import java.io.*;class Input_Exp1public static void main(String args)int n=-1;char ch=;System.out.println(请输入一个字符:请输入一个字符:);19try n=System.

15、in.read();ch=(char)n;System.out.println(“输入字符的输入字符的unicode编码值为:编码值为:+n);System.out.println(输入的字符为输入的字符为+ch);catch(IOException e)System.out.println(输入的不是字符,输入有误!输入的不是字符,输入有误!);20举例举例2编写程序:从键盘输入一个编写程序:从键盘输入一个0到到9的数字,将数字字的数字,将数字字符的编码值和字符本身输出到屏幕上,如果输入符的编码值和字符本身输出到屏幕上,如果输入的不是的不是0到到9的数字,则给出出错提示信息。的数字,则给出出

16、错提示信息。提示:提示:注意注意read()方法的使用。方法的使用。需要人工抛出异常。需要人工抛出异常。21import java.io.*;class Input_Exp2 public static void main(String args)int n=-1;char ch=;boolean f=false;System.out.println(请输入一个数字:请输入一个数字:);22try n=System.in.read();ch=(char)n;if(n57)throw new IOException();System.out.println(输入数字的输入数字的unicode编码

17、值为:编码值为:+n);System.out.println(输入的数字为输入的数字为+ch);23catch(IOException e)System.out.println(输入的输入的+ch+不是数字,输不是数字,输入有误!入有误!);24四、四、InputStream和和OutputStreamlInputStreamInputStream和和OutputStreamOutputStream是是所所在在字字节节输输入入输输出出类的根类。类的根类。l这两个类提供了一些流输入输出使用的最基本的方法。这两个类提供了一些流输入输出使用的最基本的方法。l主要方法有:主要方法有:25lread()

18、:read():从流中读入数据。从流中读入数据。lskip():skip():跳过流中若干字节数。跳过流中若干字节数。lavailable():available():返回流中可用字节数。返回流中可用字节数。lmark():mark():在流中标记一个位置。在流中标记一个位置。lreset():reset():返回标记过的位置。返回标记过的位置。lmarkSupportedmarkSupported():():是否支持标记和复位操作。是否支持标记和复位操作。lclose():close():关闭流。关闭流。1、InputStream类的主要方法类的主要方法三种从流中读数据的方法:三种从流中读数

19、据的方法:lintint read():read():从从输输入入流流当当前前位位置置读读一一个个字字节节的的数数据据并并返返回回,没有读到数据时返回没有读到数据时返回-1-1lintint read(byte read(byte b b):):读读多个字节到数组中多个字节到数组中lintint read(byte read(byte b,intb,int off,intoff,int lenlen););262、OutputStream类的方法类的方法lwrite(int b):write(int b):将一个整数输出到流中。将一个整数输出到流中。lwrite(byte b):write(b

20、yte b):将数组中的数据输出到流中。将数组中的数据输出到流中。lwrite(byte write(byte b,b,int int off,int off,int len):len):将将数数组组b b中中从从offoff指定的位置开始指定的位置开始lenlen长度的数据输出到流中。长度的数据输出到流中。lflush():flush():将缓冲区中的数据强制送出。将缓冲区中的数据强制送出。lclose():close():关闭流。关闭流。27五五 字符流类字符流类 使用字节流输入字符串较复杂,使用字符流处使用字节流输入字符串较复杂,使用字符流处理字符串的输入,相对于字节流来讲,较为方便。理

21、字符串的输入,相对于字节流来讲,较为方便。JavaJava字符流类主要用来读写字符流类主要用来读写UnicodeUnicode字符。字符。28主要字符流类及其子类主要字符流类及其子类 字符流类层次的顶层是字符流类层次的顶层是ReaderReader类类和和WriterWriter类类。Reader Reader类:类:用用来来以以字字符符方方式式从从流流中中读读取取数数据据。其其中中包包含含了了一一套套所所有有字字符符输输入入流流都都需需要要的的方方法法,可可以以完完成成最最基基本本的的从从字字符符输输入入流流读读取取数数据据的的功功能能。ReaderReader类类也也是是一一个个抽抽象象类

22、类,实实际际应应用用中中创创建建的的对对象象是是ReaderReader类类的的某个子类的对象,通过对象与外设数据源相连。某个子类的对象,通过对象与外设数据源相连。29WriterWriter类:类:用用来来以以字字符符方方式式向向输输出出流流中中写写入入数数据据。其其中中包包含含了了一一套套所所有有字字符符输输出出流流都都需需要要的的方方法法,可可以以完完成成最最基基本本的的向向字字符符输输出出流流写写入入数数据据的的功功能能。WriterWriter类类也也是是一一个个抽抽象象类类,实实际际应应用用中中创创建建的的对对象象是是WriterWriter类类的的某某个个子子类类的的对对象象,通

23、通过过对对象象与与外外设数据源相连。设数据源相连。30Reader类和Writer类的常用子类:Reader类:类:BufferedReader类类:把字符流中的字符读入指定的缓冲区。:把字符流中的字符读入指定的缓冲区。CharArrayReader类:允许使用字符数组作为数据流。类:允许使用字符数组作为数据流。FilterReader类:允许读取过滤的的字符数据流。类:允许读取过滤的的字符数据流。InputStreamReader类类:读取字节数据并将其转化为字符。:读取字节数据并将其转化为字符。Writer类类:BufferedWriter类:将数据缓冲区的字符写到输出流类:将数据缓冲区的

24、字符写到输出流 CharArrayWriter类:将字符数组缓冲区的字符写到输出流。类:将字符数组缓冲区的字符写到输出流。FilterWriter类:将过滤的字符写到输出流。类:将过滤的字符写到输出流。OutputStreamWriter类:将字符转化为字节写到输出流。类:将字符转化为字节写到输出流。31BufferedReader类:该类可以对任何种类的输入流进行带缓冲区的封装以实现性能的改善。该该类可以对任何种类的输入流进行带缓冲区的封装以实现性能的改善。该类的构造函数以类的构造函数以ReaderReader所有子类对象为参数,将从数据源读取的多个数据可所有子类对象为参数,将从数据源读取的

25、多个数据可以先暂存放到缓冲区中,即将以先暂存放到缓冲区中,即将Unicode字符流包装(转换)成缓冲流,使输字符流包装(转换)成缓冲流,使输入速度更快。例如:入速度更快。例如:BufferedReader bufin=new BufferedReader(new InputStreamReader(System.in)该语句相当于用该语句相当于用BufferedReader 类创建了一个缓冲过滤流对象类创建了一个缓冲过滤流对象bufin。BufferedReader类的类的readline()方法每次从输入流中读取一行数据,返方法每次从输入流中读取一行数据,返回一个字符串。例如:回一个字符串。

26、例如:String sname=bufin.readline();该语句相当于从缓冲过滤流对象该语句相当于从缓冲过滤流对象bufin中读取成批的数据,然后赋值给字符中读取成批的数据,然后赋值给字符串变量串变量sname。而不是从数据源中一个一个读取数据。而不是从数据源中一个一个读取数据。32InputStreamReader类 该类是从字节流到字符流的桥梁。该类的构造函数以该类是从字节流到字符流的桥梁。该类的构造函数以InputStream类(字节类)对象为参数,将字节流包装类(字节类)对象为参数,将字节流包装(转换)成(转换)成Unicode字符流。例如:字符流。例如:InputStream

27、Reader stdin=new InputStreamReader(System.in)该语句相当于用该语句相当于用InputStreamReader类创建了一个将字节流转类创建了一个将字节流转换成换成Unicode字符流的对象字符流的对象stdin。System.in是是System类的属性,代表类的属性,代表标准输入流,标准输入流,in又是又是InputStream类的对象,代表字节流。类的对象,代表字节流。也就是说,将标准输入字节流转换成字符流。也就是说,将标准输入字节流转换成字符流。33 为了提高读取效率,通常将为了提高读取效率,通常将InputStreamReader和和Buffe

28、redReader封装在一起使用。例如:封装在一起使用。例如:InputStreamReader stdin=new InputStreamReader(System.in)BufferedReader bufin=new BufferedReader(stdin)或或 BufferedReader bufin=new BufferedReader(new InputStreamReader(System.in)该语句被执行后,将创建一个连接到键盘的该语句被执行后,将创建一个连接到键盘的BufferedReaderBufferedReader,即,即bufinbufin将是一个通过将是一个通过

29、System.inSystem.in连接连接到控制台的基于字符的流。到控制台的基于字符的流。34举例举例从键盘输入一个或多个人的姓名、性别、职业,并从键盘输入一个或多个人的姓名、性别、职业,并显示。显示。提示:先测试处理单个信息,然后再处理多个信息提示:先测试处理单个信息,然后再处理多个信息。35数值类型数据的输入数值类型数据的输入 从键盘直接读入的多个数值会被看作多个字符,需要从键盘直接读入的多个数值会被看作多个字符,需要进行类型转换之后,才能看作是数值。进行类型转换之后,才能看作是数值。Short Short、IntegerInteger、LongLong、FloatFloat、Doubl

30、eDouble各类都提供了各类都提供了将字符串转换成整数、实数的方法。将字符串转换成整数、实数的方法。public static int parseInt(String str):public static int parseInt(String str):Integer Integer 类提供的方法,将字符串类提供的方法,将字符串strstr转变成转变成intint类型整数。类型整数。例如:例如:String ch=“123”String ch=“123”;int n=Integer.parseInt(ch)int n=Integer.parseInt(ch);将字符串将字符串“123”“1

31、23”转换成数值转换成数值123123。Short Short、Long Long、FloatFloat、DoubleDouble各类对应的该方法名分各类对应的该方法名分别为:别为:parseShortparseShort、parseLong parseLong、parseFloat parseFloat、parseDoubleparseDouble。使用方法同。使用方法同parseIntparseInt36举例举例 编写一个简单的人员信息录入程序编写一个简单的人员信息录入程序.要求从键要求从键盘输入人数盘输入人数,然后依次输入每个人的姓名、年龄、然后依次输入每个人的姓名、年龄、职称和月工资,

32、最后将输入的人员信息全部显示职称和月工资,最后将输入的人员信息全部显示在屏幕上。在屏幕上。37作业:作业:1 1 什么是流?流的分类?什么是流?流的分类?2 InputStream,OutputStream,Reader2 InputStream,OutputStream,Reader和和WriterWriter类的类的功能有何异同?功能有何异同?3 3 从键盘输入一个数字(从键盘输入一个数字(0-90-9),分别显示该数字本),分别显示该数字本身和该数字对应的身和该数字对应的UnicodeUnicode码值。(注意异常处理)码值。(注意异常处理)4 4 从键盘输入三个人的姓名和从键盘输入三个人的姓名和JAVAJAVA成绩,显示三个成绩,显示三个人的姓名和成绩,求出显示三个人中最高分的人人的姓名和成绩,求出显示三个人中最高分的人的姓名和成绩,并求出三个人的的姓名和成绩,并求出三个人的JAVAJAVA平均分。平均分。38

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁