赞
踩
初次涉及IO是从键盘中输入,在控制面板上输出。
最简单的输入语法是:
Scanner input = new Scanner(System.in);
int x = input.nextInt();
最简单的输出语法是:
System.out.println();
在刚接触Java的时候根本不知道System.in是什么东西,也不明白为什么System.out.println()为什么会在控制面板上输出。
学完二进制输入输出后,一切开始明朗。
先说说System.in是什么。
查看API文档,在java.lang包中的方法System类中发现in是System中的由final修饰的InputStream类型的常量
public static final InputStream in
这说明System.in指的是一个输入流(InputStream),它的功能是创建一个由键盘输入的流
再说说System.in的工作原理。
众所周知,一个流必须要有一块地方提供该流的源头或者结尾,比如FileInputStream的构造方法:FileInputStream in = new FileInputStream(filesName)//filesName指的就是供该流读取字节的文件。大部分流都会有这样的一个文件。那System.in这个输入流的源头在哪里呢?System.in比较特殊,在使用这个流的时候,源头会更新,也就是说它的源头是新开辟出来的空间,用来储存键盘上输入的内容。
当我们调用System.in语句的时候实际上我们做了两个动作:1.创建了一个字节流;2.创建了一个类似于文件的储存空间(用完即被消除)。试分析下面语句:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while((s=in.readLine)!=null){
//循环主体
}
这种从键盘上向一个流中输入数据的方法称为阻塞式方法,当你不在键盘上输入数据或者没有按enter键输入的时候,循环是不会进行的,流会暂停流动。
最后说说System.out.println().
这里的System.out不用我说大家也应该猜到,它也是一个流,翻看API文档:
public static final PrintStream out
不过他是一个PrintStream类型的流,PrintStream类定义了println()方法,它的作用是想输出流的“尾巴”输出数据,而System.out的“尾巴”是可以设置的,设置语句为:System.setOut();//括号内是"尾巴",可以是一个文件,也可以是一个临时定义的容器类对象。
这两个东西其实不必深究,但是我总觉得有时间的话这些细节还是搞搞明白比较好,内心觉得踏实,我也是新手,希望各位大神不吝赐教,如果写得东西有误,希望各位大神不吝赐教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。