关于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的用户输入。
关于System.in如何执行的问题的更多相关文章
- C# 对包含文件或目录路径信息的 System.String 实例执行操作
在字符串操作中有一类比较特殊的操作,就是对包含文件或目录路径信息的 System.String 实例执行操作.比如根据一个表示路径的字符串获取其代表的文件名称.文件夹路径.文件扩展名等.在很多时候,我 ...
- Java中JIN机制及System.loadLibrary() 的执行过程
Android平台Native开发与JNI机制详解 http://mysuperbaby.iteye.com/blog/915425 个人认为下面这篇转载的文章写的很清晰很不错. 注意Android平 ...
- System.Diagnostics.Process 执行.EXE
分类: C#+WINFORM 2009-04-05 21:09 459人阅读 评论(0) 收藏 举报 我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打 ...
- C语言system()函数:执行shell命令
头文件:#include <stdlib.h> 定义函数:int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进 ...
- 灵魂拷问:你真的理解System.out.println()执行原理吗?
原创/朱季谦 灵魂拷问,这位独秀同学,你会这道题吗? 请说说,"System.out.println()"原理...... 这应该是刚开始学习Java时用到最多一段代码,迄今为止 ...
- 已以用户 NT AUTHORITY\SYSTEM 的身份执行。 对象 名称 'XXX' 包含的前缀超出了最大限值。最多只能有 2 个。
我写了一个存储过程,里面用到了链接服务器,需要把这台电脑上的数据传送到连接服务器上去 insert [链接服务器].[数据库].[dbo].[表名] 我的数据 这样的格式是完全没问题的,问题出在于我t ...
- pycharm下 os.system os.popen执行命令返回有中文乱码
原文 settings:
- JVM诊断及工具笔记(2)使用arthas定位哪里执行了System#gc()
笔者是汽车之家实时计算平台的一名小伙伴.负责flink平台,数据湖及kafka平台的设计与开发.平时擅长做平台设计,定位及解决各种疑难杂症.第二篇文章,讲的点依旧很小,但是这次图多!!! 在这里感谢支 ...
- 在程序中执行shell命令
在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...
随机推荐
- [转载]oracle的加密和解密
加密函数 create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 isv_tex ...
- Java中在java.sql.Date的系统时间上加上30天并写入oracle
在java.sql.Date的系统时间上加上30天,并写入oracle 思路:通过 Calendar.getInstance() 获得对象,然后 add() 方法添加 时间,再通过 new java. ...
- \r\n回车换行\r回车\n换行的区别
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候 ...
- JavaScript笔记 #08# 用Regex辅助生成文章目录 V2.0
索引 简介 测试用例 代码 简介 * 用Regex辅助生成文章目录 2.0 * 1.提高了功能的通用性(假定的文章格式更加普遍,即按照h2h3h4分级) * 2.改善了代码的可读性(稍微牺牲了一点点性 ...
- JDK JRE JVM的区别
Jdk[Java Development ToolKit]就是java开发工具箱, JDK是整个JAVA的核心,里边包含了jre,它除了包含jre之外还包含了一些javac的工具类,把java源文件编 ...
- PyCharm 安装及破解方法
PyCharm 安装及破解方法 一.安装 首先要下载Pycharm这个软件,可以在官网下载进行下载. 下载完软件之后,双击安装文件即可进行安装,双击后出现下图所示的提示,点击Next即可. 然后会出现 ...
- aircrack-ng后台跑包, 成功后自动发送邮件通知
我的思路是直接用nohup守护进程输出结构到指定文件, 然后判断文件中"KEY FOUND"的字段. 启动aircrack-ng方式 nohup aircrack-ng -w /o ...
- [WARNING]: Could not match supplied host pattern, ignoring: servers
Centos7.5 ansible执行命令报错 问题: [root@m01 ~]# ansible servers -a "hostname" [WARNING]: provide ...
- orm查询存在价格为空问题
明明写的没错还是查不到 打印一下sql语句: 解决办法: 把数字变成字符串格式 所以涉及金融计算,涉及小数啊,要求特别精确的,我们用字符串存储.
- LOIC
Pre: http://sourceforge.net/projects/loic Getting the Software To DDos, first your going to have to ...