关于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命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...
随机推荐
- SQL表分区之二
前面说的给表做表分区,现在有个问题,比如上面我们说的是按照20w为一个分割线,那些现在我们想把这个调整下怎么办?难道要把之前的分区函数和分区方案删了,重新新建分区函数和分区方案嘛? 当然,此方式肯定是 ...
- 动手动脑-Java的方法重载
例: Using overloaded methods public class MethodOverload { public static void main(String[] args) { ...
- flask框架----flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- getElementsByClassName方法的封装
Element.prototype.getElementsByClassName = function(searchClass,node,tag){ if(document.getElementsBy ...
- javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception
type Exception report message Servlet.init() for servlet springmvc threw exception description The s ...
- torchvision.datasets.ImageFolder数据加载
ImageFolder 一个通用的数据加载器,数据集中的数据以以下方式组织 root/dog/xxx.png root/dog/xxy.png root/dog/xxz.png root/cat/12 ...
- Centos下10000次循环测试php对Redis和共享内存(shm)读写效率
redis和memcache还有共享内存都是读取内存的数据,为了测试一下到底效率谁更胜一筹,我在我的Centos虚拟机下做了一次公平的测试. 测试参数 环境:Centos (配置忽略).语言:PHP. ...
- css显示display、可见性visibility、定位position、对齐
隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden",但是这两种方法会产生不同的结果. display ...
- DATAPUMP PERFORMANCE EXPDP IS VERY SLOW 10.2.0.4 TO 11.2.0.2
APPLIES TO: Oracle® Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2 [Release 10.2 to 11 ...
- 2018年11月16日 我和SB交流有代沟-继续字符串4
test="abcdeffedcba" v=test.lstrip("bcabc")#寻找的是最多匹配然后移除指定字符串 print("1.lstri ...