zoukankan      html  css  js  c++  java
  • 关于System.in如何执行的问题

    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的用户输入。

  • 相关阅读:
    java DES转C#DES加密解密
    PIE SDK影像格式转换
    PIE SDK位深转换
    PIE SDK存储格式转换
    PIE SDK栅格生成等值线、面
    PIE SDK反距离权重插值算法
    PIE SDK克里金插值法
    PIE SDK热力图
    PIE SDK Alpha通道数据渲染
    PIE SDK 多数据源的复合数据集加载
  • 原文地址:https://www.cnblogs.com/xujanus/p/8427156.html
Copyright © 2011-2022 走看看