关于System.in如何执行的问题
2018-02-07 16:08
169 查看
import java.io.IOException; public class Test1 { public static void main(String[] args) throws IOException { System.out.println("请输入:"); int i = 0; while(i!=-1){//读取输入流中的字节直到流的末尾返回1 i = System.in.read(); System.out.println(i); } } }
在使用system.in运行上述代码时,控制台的光标会一直停留在输入的状态,而不是像普通的程序一样,执行完,就退出。这是为什么么呢?
这就涉及到IO inputStream outputStream 的原理。
InputStream OutputStream 和他们的缓冲器。 都相当于一条管道。 Buffer 相当于一个水池,或者说一个大的水管。
当 System.in.read(); 的时候 管道会向来源方 抽水(索取一行字符串) 会一直等到有水来了为止。(阻塞,一直等待) 而管道那头连接的是 用户输入(System.in)
所以当你调用 System.in.read(); 的时候。 就相当于会向管道的那头System.in 索取一行数据。
所以程序会一直循环跳到System.in那行,从没关闭的通道 里 获取System.in的用户输入。
相关文章推荐
- 提示系统启动关于误更改/var下诺干的权限问题,导致系统启动提示The System is running in low-graphics mode问题解决 By ACReaper
- 向大家请教一个关于sharepoint2003的问题,如何使一个Custom List in Datasheet View中某个field从其他list抽取数据当显示时?
- 关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
- 如何修复ubuntu启动时显示的“The System Running In Low Graphics Mode’ Error”问题
- Marvell交换机luaCLI引擎启动流程以及如何解决函数cpssInitSystem()被二次调用的问题
- 执行CreateObject("Scripting.FileSystemObject")代码遇到"Operation is disallowed in this session"问题
- 关于JAVA的Scanner(System.in)循环输入的一些问题与解决
- 关于system.in读入的数据,打印出来乱码问题
- 关于Can't find following headers in System Include Path警告的问题
- 关于如何利用COM+,来提高ASP执行权限的问题!
- 关于如何解决Global.asax中Session_Start不执行的问题
- 关于误更改/var下诺干的权限问题,导致系统启动提示The System is running in low-graphics mode问题解决 By ACReaper
- 在Share Point 2010中,如何使用 in 语句?并且解决Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)的问题。
- 关于open.window子页面执行完成后如何刷新父页面的问题
- System.in.read()长度多2问题
- 关于如何解决C++ Builder中DBLookupComboBox不能输入的问题:
- 关于模态对话框关闭之后继续执行服务器端代码的问题
- 关于fso( FileSystemObject )的一些常见问题
- 关于PD中的BUB问题解决(InberKung原创)
- 关于如何从多个项目创建 ASP.NET 应用程序以进行组开发问题