键盘在哪里指定了System.in方法?

我无法从概念上理解下面的代码(从键盘检索字符并打印到命令行),我指定输入必须来自键盘?

public class Adder { public static void main(String arr[]) { //Explain this next line, please: Scanner in = new Scanner(System.in); System.out.println("Enter First No."); int a = in.nextInt(); System.out.println("Enter Second No."); int b = in.nextInt(); int c = a+b; System.out.println("Sum is: "+c); } } 

System.in不是一种方法,它是默认情况下绑定到键盘的字段。

“标准”输入流。 此流已打开并准备好提供输入数据。 通常,该流对应于键盘输入或由主机环境或用户指定的另一输入源。

您可以调用System.setIn(InputStream in)方法将其更改为其他输入流。

参考: 命令行的I / O.

 Scanner sc = new Scanner(System.in); 

让我们分解吧

扫描程序: Scanner类是java.util中的一个类,它允许用户读取各种类型的值

System.in:一个InputStream,通常连接到控制台程序的键盘输入

  Scanner S = new Scanner(System.in) 

上面的行将使用参数System.in调用Scanner类的构造函数,并将返回对新构造的对象的引用。

S连接到连接到键盘的输入流,因此现在在运行时您可以使用用户输入来执行所需的操作。

进一步研究: 扫描仪(Java Platform SE 8)

让我知道,如果你有任何困惑。