Java编程:键盘输入字符与流的使用

需积分: 9 8 下载量 119 浏览量 更新于2024-08-18 收藏 207KB PPT 举报
"Java实例展示了如何使用标准输入流(System.in)从键盘接收字符,并通过输出流(System.out)显示。此程序涉及到Java中的输入输出流,包括字符流与字节流的概念,以及InputStream、OutputStream、Reader和Writer类族的使用。" 在Java编程中,输入输出(I/O)操作是至关重要的,它允许程序与外部世界进行数据交换,如键盘输入、文件读写、网络通信等。Java提供了一个强大的I/O框架,这个框架主要集中在`java.io`包中。 1. **输入/输出类库** Java的I/O机制基于流(Stream)的概念,流是一系列连续的数据序列,可以是字节流或字符流。字节流处理单个字节的数据,而字符流处理Unicode字符。在`java.io`包中,字节流的基类是`InputStream`和`OutputStream`,字符流的基类是`Reader`和`Writer`。 2. **标准输入/输出及标准错误** 在Java中,`System.in`代表标准输入,通常用于从键盘接收数据;`System.out`代表标准输出,常用于打印到控制台;`System.err`则代表标准错误输出,用于输出错误信息。 3. **输入流与输出流** - `InputStream`类提供了基本的读取字节的方法,如`read()`用于读取单个字节,`skip()`用于跳过指定数量的字节,`close()`用于关闭流,`mark()`和`reset()`支持流的标记和重置,以便于回溯。 - `OutputStream`类包含写入字节的方法,如`write()`用于写入字节,`flush()`用于清除缓冲区的数据,`close()`关闭流。 - 对于字符流,`Reader`类提供了读取字符的方法,如`read()`读取单个字符,`BufferedReader`等子类提供缓冲功能以提高效率。 - `Writer`类则包含写入字符的方法,如`write()`,`BufferedWriter`等子类提供了缓冲区支持。 4. **文件操作** 文件操作涉及`FileInputStream`和`FileOutputStream`,它们分别继承自`InputStream`和`OutputStream`,可以直接读写文件。同样,`FileReader`和`FileWriter`用于字符流的文件操作。 5. **过滤流与缓冲流** Java I/O还提供了一些扩展功能的流,如`FilterInputStream`和`FilterOutputStream`,它们可以作为装饰器模式的一部分,添加额外的功能,如数据压缩。`BufferedInputStream`和`BufferedOutputStream`以及`BufferedReader`和`BufferedWriter`提供了缓冲功能,提高了读写效率。 6. **转换流** `InputStreamReader`和`OutputStreamWriter`是字节流到字符流的转换器,它们允许在字节流和字符流之间进行桥接,例如,可以将键盘输入的字节流转换为字符流。 在提供的代码实例中,程序创建了一个`main`方法,使用`System.in.read()`从键盘读取一个字符,然后通过`System.out.print()`输出。这里使用的`System.in`是`InputStream`的一个实例,代表标准输入,`System.out`是`PrintStream`的一个实例,负责输出。 总结来说,Java的I/O系统提供了一套全面的类和接口,用于处理各种输入输出任务,包括从键盘接收用户输入、向控制台打印输出,以及对文件和网络的读写操作。通过理解这些基础知识,开发者能够构建复杂的I/O处理逻辑。