在java中创建变量或调用方法
我正在学习java编程。在java中创建变量或调用方法,java,variables,methods,Java,Variables,Methods,我正在学习java编程。 当我浏览这些类示例时,我看到了下面的代码 Scanner input = new Scanner (System.in) 我知道它声明了一个Scanner变量输入,但我想知道为什么我应该声明这样的变量,而不是通过直接调用Scanner类中的方法来使用这个函数 为什么我应该声明这样的变量,而不是通过直接调用类Scanner中的方法来使用这个函数 只能像您建议的那样调用static方法。大多数值得一提的Scanner方法不是static 您应该将扫描仪声明为变量,因为扫描
当我浏览这些类示例时,我看到了下面的代码
Scanner input = new Scanner (System.in)
我知道它声明了一个Scanner变量输入,但我想知道为什么我应该声明这样的变量,而不是通过直接调用Scanner类中的方法来使用这个函数
为什么我应该声明这样的变量,而不是通过直接调用类Scanner中的方法来使用这个函数
只能像您建议的那样调用
static
方法。大多数值得一提的Scanner
方法不是static
您应该将扫描仪
声明为变量,因为扫描仪
类不是静态的
让我们把作业分解一下:
扫描仪输入
。这表示名称为input
的变量将被分配为扫描器
newscanner
,它告诉Java您正在创建一个类型为Scanner
的新对象
,以存储在字段input
中System.in
李>
这是关键的第三步。由于您是新手,如果您不理解static
修饰符,我将在尝试处理此问题之前查找该修饰符
新扫描仪的构造函数中有一个参数:InputStream
。InputStream
是例如键盘的接口。下面是您无法调用Scanner.next()的原因:如果您想要两个不同的输入流,该怎么办
通过创建变量输入
,您将特定于System.in的扫描仪
存储在该变量中。如果你有一个文件,你可能需要另一个扫描器来扫描它的输入流(虽然文件不是这样读取的,但是你明白了。)
如果扫描器的功能是静态的,您将只能有一个扫描器。这意味着通过扫描器将用户限制为只有一个输入流。您需要进一步了解OOP。但本质上,关于能够直接调用一个类的方法,我们所问的是类的静态方法。它们不受任何特定实例的约束。静态方法不知道任何特定于实例的数据。在本例中,InputStream传递给构造函数 由于我不知道您所指的是哪一个特定的Scanner类,我假设编写该类的人员认为,作为函数的数据成员访问InputStream非常有用。因此它就是这样设计的 一般来说,在OOP中,这就是事物的设计方式。使用数据实例化对象,并对对象调用函数。静态方法的使用在一定程度上打破了OOP架构 我希望这能澄清一些问题。看看这句话- 扫描仪输入=新扫描仪(System.in) 我们可以把它分成两部分-
(1)创建一个名为
input
的引用,用于保存赋值左侧的Scanner
类型的任何变量。(2)类型为
Scanner
的对象在赋值的右侧实例化。最后,Scanner
类型的实例/对象被分配新创建的变量
现在来回答你的问题-
为什么我应该声明这样的变量,而不是通过
直接调用类扫描程序中的方法
因为在
Scanner
类中,没有这样的方法返回一个Scanner类型变量,该变量被分配给新创建的变量input
。更多关于在类内调用函数而不创建类的对象,方法应该是“静态的”。我对第一步的措辞感到不舒服,因为它没有创建扫描程序。啊,哎呀。我的错误,修正了。