在初学Java的时候,常常会有以下的输入输出范例出现:
Scanner sc = new Scanner(System.in);
System.out.print("Please input some text : ");
String inputStr = sc.next();
System.out.println("Here's your input text : " + inputStr);
我们执行以上程序时,就会在console看到”Please input some text : “的字样,并可以输入文字在console上,假设我们输入了"123";当我们按下enter後,就会在下一行看见”Here’s your input text : 123“。
不知道大家当初看到这段程序码会有什麽感觉,但我个人是觉得很感动!终於写了一些可以互动的程序了,不然在此之前会觉得程序怎麽只是一个小算盘一样做一些四则运算。
不过通常这段程序码的用意会是在说明String或者加入一些while语法来解释回圈的概念,不会把重点放在能够让我们输入文字的System.in以及能够输出文字到console的System.out,这篇就希望来回头看看这两个是甚麽东西。
若我们去翻Java API时,会发现其实in与out是System这个类别的静态资料成员(field);System.in为InputStream型态,System.out为PrintStream型态。
那为什麽我们要用System.in以及System.out呢?若仔细想一下上面的程序码,输入部分其实真正在运作的是Scanner实例,呼叫了next()来让程序去等待我们输入资料,那我们是不是也可以在new Scanner(InputStream someIS)时放入其他的InputStream实例?答案当然是没有问题,我们可以放入任意的InputStream型别物件进去来当作Scanner的建构式引数,可是就要自己写了,对不对?比如我们希望放某个档案当作引数,那就要写出new FileInputStream(String filePath),是不是就麻烦了~必须真的要有这个档案,然後知道这个档案放在什麽路径下,并且亲自创建出FileInputStream的实例。
所以其实可以说,Java所提供的System.in以及System.out就是一个帮我们创建好的输入输出实例,也称为"标准输入"以及"标准输出",且预设会是在文字模式的console下运作;如果我们需要改变System.in或System.out为其他的输入输出模式,比如把来源或目的地改成档案,那就可以再运用System的静态方法setIn(InputStream in)以及setOut(PrintStream out)来覆盖掉预设的设定。
小结:
System.in以及System.out是Java帮我们创建好,能够直接拿来用的输入输出实例,预设是在文字模式的console中运行。
<<: DAY26-在firebase上架你的react网站吧
各位好,我是PLBD(aka Leodaddy),曾任职大型科技公司负责IoT产品进行系统架构分析、...
TextView喜虾密东西勒?? 其实就是程序一开始"Hello World!"...
流程图 运动 go! 由使用者传送位置讯息给 Line,Line 搭配之前提到过的开放地图,搜寻附近...
昨天介绍rxjava2简单的写法,今天会介绍rxjava2其他的做法 Observables RxJ...
教材网址 https://coding104.blogspot.com/2021/06/java-r...