您的位置:首页 > 其它

关于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的用户输入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐