java基本输入输出
Java的基本输入与输出
0
本章目标
1 2
理解相关基本概念。 理解相关基本概念。 使用键盘进行单个字符、字符串、 使用键盘进行单个字符、字符串、数值类型数据 的输入。 的输入。
1
Java的基本输入与输出方式
1. 2.
字符界面方式(本章内容) 字符界面方式(本章内容) 图形界面方式(以后介绍) 图形界面方式(以后介绍)
2
一、Java中流的概念 Java中流的概念
日常生活中所说的流: 日常生活中所说的流:
日常生活中的流可以被理解为一根“导管” 日常生活中的流可以被理解为一根“导管”。 导管的特点:单向性。 导管的特点:单向性。 1、什么是流? 导管”中的流类似于Java语言中的IO Java语言中的IO流 “导管”中的流类似于Java语言中的IO流。 Java语言中,流是程序在输入输出过程中流动的数据序列。 Java语言中,流是程序在输入输出过程中流动的数据序列。 语言中 流动的数据序列 流有两个端口:一端与数据源点(当输入数据时) 流有两个端口:一端与数据源点(当输入数据时)或数据 终点(当输出数据时)相连,另一端与程序相连。 终点(当输出数据时)相连,另一端与程序相连。
举例2 举例
编写程序:从键盘输入一个 到 的数字 的数字, 编写程序:从键盘输入一个0到9的数字,将数字字 符的编码值和字符本身输出到屏幕上, 符的编码值和字符本身输出到屏幕上,如果输入 的不是0到 的数字 则给出出错提示信息。 的数字, 的不是 到9的数字,则给出出错提示信息。 提示: 提示: 注意read()方法的使用。 方法的使用。 ① 注意 方法的使用 需要人工抛出异常。 ② 需要人工抛出异常。
17
举例1 举例
编写程序:从键盘输入一个字符,将字符的编码值 编写程序:从键盘输入一个字符, 和字符本身输出到屏幕上。 和字符本身输出到屏幕上。 提示: 提示: 注意read()方法的返回类型。 方法的返回类型。 ① 注意 方法的返回类型 注意read()方法只能读取一个字符。 方法只能读取一个字符。 ② 注意 方法只能读取一个字符 注意read()方法要进行异常处理。 方法要进行异常处理。 ③ 注意 方法要进行异常处理
19
20
try{ n=System.in.read(); ch=(char)n; System.out.println(“输入字符的 输入字符的unicode编码值为: 编码值为: 输入字符的 编码值为 "+n); System.out.println("输入的字符为 输入的字符为"+ch); 输入的字符为 } catch(IOException e){ System.out.println("输入的不是字符,输入有误!"); 输入的不是字符,输入有误! 输入的不是字符 } } }
3
2、流的示意图 、
A stream
数据源
reads
Program
当程序要从数据源点获得数据时, 当程序要从数据源点获得数据时,必须在程序和数据源之 间建立输入流。 间建立输入流。 Program
writes A stream
目标
4
当程序要把结果输送到数据终点时, 当程序要把结果输送到数据终点时 , 必须在程序和数据终 点之间连接建立输出流。 点之间连接建立输出流
创建流,只能用它们的子类创建字节输入或字节输出流。 创建流,只能用它们的子类创建字节输入或字节输出流。
8
字节流类的继承图: 字节流类的继承图:
9
字节流类中的几个重要方法
read()方法:InputStream类中的静态方法,用于从输入字节 方法: 类中的静态方法, 方法 类中的静态方法 流中读出一个字节。 流中读出一个字节。 print()方法 : OutputStream 类的子类 方法: OutputStream类的子类 类的子类FilterOutputStream的 方法 的 子类PrintStream的方法 。 用于输出不同类型的数据信息 。 的方法。 子类 的方法 用于输出不同类型的数据信息。 println()方法:和print()方法唯一的区别是 方法: print()方法唯一的区别是println()方法输 方法 方法唯一的区别是 方法输 出对象之后附带一个回车,下一次将在下一行中输出。 出对象之后附带一个回车,下一次将在下一行中输出。
13
Java系统预先定义的标准IO流 Java系统预先定义的标准IO流 系统预先定义的标准IO
— System.in:标准输入流,默认指键盘,用于程 :标准输入流,默认指键盘, 序输入,通常读取用户从键盘输入的信息。 序输入,通常读取用户从键盘输入的信息。
— System.out: 标准输出流 , 默认指屏幕 , 用于 : 标准输出流, 默认指屏幕,
System类是Java语言中一个功能强大、 System类是Java语言中一个功能强大、非常有 类是Java语言中一个功能强大 用的类,它提供了标准输入与输出、 用的类,它提供了标准输入与输出、运行时的系 统信息等重要工具,是属于ng ng包的一个终 统信息等重要工具,是属于ng包的一个终 止类。 止类。 System类不能创建对象 类不能创建对象, System类的属性和 System类不能创建对象,即System类的属性和 方法都是静态的,引用时要以System为前缀。 System为前缀 方法都是静态的,引用时要以System为前缀。 in、out、err为System类的三个静态属性 类的三个静态属性。 in、out、err为System类的三个静态属性。
6
1、Java中流类的总图如下: Java中流类的总图如下: 中流类的总图如下
用于输入的字节 流 用于输入的字符 流类
用于输出的字节 流
用于输出的字符 流类
7
2、字节流类
字节流以字节方式从流中读取或向流中写入数据, 字节流以字节方式从流中读取或向流中写入数据,字节流类 有:
– 输入流类InputStream及其子类 输入流类InputStream InputStream及其子类 – 输出流类OutputStream及其子类 输出流类OutputStream OutputStream及其子类
16
说明: 说明:
in是System类的一个属性,代表系统标准输入(键盘)。 是 类的一个属性, 类的一个属性 代表系统标准输入(键盘)。 In属性是 属性是InputStream类的对象, InputStream类中的方 类的对象, 属性是 类的对象 类中的方 用于接受从标准输入设备输入的字符。 法read()用于接受从标准输入设备输入的字符。执行 用于接受从标准输入设备输入的字符 System.in.read()会得到输入字符的 会得到输入字符的unicode编码值。 编码值。 会得到输入字符的 编码值 在java中,当进行键盘输入时要处理可能发生的异常现象, 中 当进行键盘输入时要处理可能发生的异常现象, 因此程序设计时使用的System.in.read()语句必须包含在 因此程序设计时使用的 语句必须包含在 try语句块中,而且 语句块的后面应该有一个可以接收 语句块中, 语句块中 而且try语句块的后面应该有一个可以接收 IOException异常的 异常的catch语句块。 语句块。 异常的 语句块
的子类PrintStream创建的对象,而print()和println()方 创建的对象, 的子类 和 方 类的成员方法。 法为PrintStream类的成员方法。
15
3 标准输入流
标准输入流使用System类的静态属性 的 read()方法 类的静态属性in的 标准输入流使用 类的静态属性 方法 从键盘读取一个字节到程序。实现格式如下: 从键盘读取一个字节到程序。实现格式如下: System.in.read() 功能:执行该方法时,等待用户击键,当击一次键后, 功能:执行该方法时,等待用户击键,当击一次键后, 该方法从输入流中读出一个字节(所键入字符的ASCII 该方法从输入流中读出一个字节(所键入字符的 ),然后将该字符的 然后将该字符的ASCII码换成 码换成Unicode编码,返回 编码, 码),然后将该字符的 码换成 编码 值为Unicode编码的 型数。按回车输入结束。 编码的int型数 值为 编码的 型数。按回车输入结束。
18
import java.io.*; class Input_Exp1{ public static void main(String[] args) { int n=-1; char ch=' '; System.out.println("请输入一个字符:"); 请输入一个字符: 请输入一个字符
10
三、标准输入/输出 标准输入/
标准输入/输出; 标准输入 /输出;指面向标准输入设备和标准输出设备 的输入/输出。 的输入/输出。 标准输入设备:现阶段默认为键盘。 标准输入设备:现阶段默认为键盘。 标准输出设备:现阶段默认为显示器。 标准输出设备:现阶段默认为显示器。
11
1、System类 System类 System
3、流的分类 、
根据流中数据传输的方向,将流分为: 根据流中数据传输的方向,将流分为:
– 输入流:从键盘或磁盘文件流向程序的数据流,为程序提 输入流:从键盘或磁盘文件流向程序的数据流,
供输入信息。 供输入信息。 – 输出流:从程序流向显示器、打印机、磁盘文件的数据流, 输出流:从程序流向显示器、打印机、磁盘文件的数据流, 实现程序的输出功能。 实现程序的输出功能。
12
Java系统内预定义的标准 流定义格式 系统内预定义的标准IO流定义格式 系统内预定义的标准
public final class ng.System extends ng.object{ public static InputStream in; public static PrintStream out; public static PrintStream err; }