Java初级流知识总结:System.in与System.out
需积分: 10 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都能提供强大支持。
2021-10-01 上传
2008-10-05 上传
2011-08-21 上传
2021-06-03 上传
2011-11-11 上传
2021-06-03 上传
2017-05-29 上传
2011-12-10 上传
2012-01-20 上传
zijie405
- 粉丝: 9
- 资源: 30
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析