Java初级流知识总结:System.in与System.out

需积分: 10 1 下载量 154 浏览量 更新于2024-10-21 1 收藏 126KB DOC 举报
"Java流与IO流基础教程" 在Java编程中,IO流(Input/Output Stream)是用来处理数据输入和输出的关键概念。Java提供了丰富的流API,使得开发者能够高效地进行文件操作、网络通信以及数据传输。本资料主要涵盖Java初级流的知识点,包括System类中的标准输入输出流以及如何读取用户输入和处理字节数组。 1. **System类中的标准输入输出流** - `System.out`: 这是一个`PrintStream`对象,用于将输出发送到默认的显示设备,通常为显示器。在示例P1中,我们看到`System.out.println()`用于打印信息。 - `System.in`: 这是一个`InputStream`对象,用于获取标准输入,一般是从键盘。在P1中,我们通过`System.in.read()`读取用户输入的一个字符。 2. **读取用户输入** - 示例P1演示了如何读取用户输入的单个字符。`System.in.read()`方法会返回下一个可用的字节,转换为对应的字符并赋值给变量`inchar`。 3. **处理字节数组** - 示例P2展示了如何使用字节数组读取用户输入的数据。`System.in.read(bArray)`将用户输入读入到字节数组`bArray`中。但由于直接打印字节数组会得到内存地址而非实际内容,所以需要将其转换为字符串。在Java较旧的版本中,可以使用`new String(bArray, 0)`来实现,但在现代Java中,这个构造方法已经不再推荐。 4. **流的分类与层次结构** - Java的流分为两种主要类型:字节流(处理单字节数据)和字符流(处理Unicode字符)。字节流由`InputStream`和`OutputStream`作为基础抽象类,字符流则由`Reader`和`Writer`为基础。 - `System.in`实际上是一个`BufferedInputStream`实例,用于缓冲输入数据;而`System.out`和`System.err`都是`PrintStream`实例,用于打印输出。 5. **流的基本方法** - `InputStream`类中的`read()`方法用于读取一个字节数据,`skip()`用于跳过指定数量的字节,`available()`返回可以无阻塞读取的字节数,`mark()`则允许在流中设置标记,以便稍后恢复到该位置。 6. **流的组合与装饰模式** - Java流设计遵循装饰器模式,允许通过添加新的功能(如缓冲、转换编码等)而不改变原有流的行为。例如,`BufferedReader`和`BufferedWriter`可以在原始的`InputStream`或`OutputStream`之上添加缓冲功能。 7. **流的关闭** - 使用完流后,记得关闭以释放系统资源。通常使用`finally`块或try-with-resources语句来确保流的关闭。 Java的IO流提供了一种灵活的方式来处理数据输入和输出。了解这些基础知识对于理解和使用Java进行数据操作至关重要。无论是读写文件,还是进行网络通信,Java的流API都能提供强大支持。