Day25:看看猪走路

在初学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网站吧

>>:  Day23 类别与物件--继承、常见关键字

Day 1 你的个资确定只有在你手中吗?

各位好,我是PLBD(aka Leodaddy),曾任职大型科技公司负责IoT产品进行系统架构分析、...

Day7 - TextView(一)

TextView喜虾密东西勒?? 其实就是程序一开始"Hello World!"...

Nutrition Helper Part 2

流程图 运动 go! 由使用者传送位置讯息给 Line,Line 搭配之前提到过的开放地图,搜寻附近...

android studio 30天学习笔记-day 9-rxjava2补充

昨天介绍rxjava2简单的写法,今天会介绍rxjava2其他的做法 Observables RxJ...

[Java Day16] 4.4. 回传值

教材网址 https://coding104.blogspot.com/2021/06/java-r...