为什么需要从其他静态空隙中调用静态空隙?

时间:2014-09-03 03:53:19

标签: java static void

我的高中有一个计算机编程-K课程,我们使用Java作为我们的语言。我注意到你似乎需要在每个脚本的开头都有public *static* void main(String[] args)。我们的主要结构是:

public class
   ( void main()
     void input()
     void process()
     void output() )

我们必须使所有void方法都是静态的,才能相互调用,因为我们不能使用非静态main。为什么? Java中静态意味着什么?

3 个答案:

答案 0 :(得分:0)

静态意味着您不需要拥有类的实例来调用该方法。

static void main只是Java所需的特定功能,因此它知道从哪里开始运行代码。每个程序必须包含一个,static void main

答案 1 :(得分:0)

我注意到你似乎需要拥有' public static void main(String [] args)'在每个脚本的开头。

原因是当JVM运行程序时,它需要能够运行它而不创建包含main方法的入口类的实例。有时你的包含main方法的类可能有构造函数需要参数来创建它的实例然后JVM如何知道它必须传递什么值才能自己创建它的实例,这就是为什么java强迫你使main为静态方法,以便JVM不需要担心创建主类的实例来调用main方法,该方法是应用程序的入口点。

我们必须使所有空隙静止

这是一个不正确的假设。您无需将void方法设为静态方法。有两种方法可以通过类的对象(这些方法称为实例方法)或通过类变量(名称)调用方法(这些方法称为静态方法)。如果您不想让您的方法保持静态,那么您需要创建一个类的实例广告,并调用您的方法。

Java中的静态意味着什么? static是Java中的修饰符。您可以将它用于实例变量,也可以用于方法或内部类。此关键字使资源(实例变量/ methods / innerclass)成为基础类的属性,因此在类的所有实例(对象)之间共享。

答案 2 :(得分:0)

首先,mainpublic static void强制要求main

  

方法public必须声明为staticvoidString。它必须指定一个形式参数(第8.4.1节),其声明的类型是main的数组。

这就是它的方式;没有它,Java将不会执行您的脚本,因为缺少主方法。

你把它放在哪里也没关系 - 它可以在那个类的中间,在顶部,在底部,或者在一个完全不同的文件中 - 只要你的程序有static方法实际运行。

关于static的含义 - 嗯,这取决于背景。

  • 如果您在字段上使用static(即类中包含的变量),则会Java Language Specification

  • 如果您对方法(例如main或其他方法)使用Integer.parseInt,那么这是only ever be one instance of that field,并且不需要实例它被调用和使用的对象。这些特定方法不应该依赖于调用它们的类的内部状态。

举个例子,你稍后会讨论Integer;这是一个静态方法,它绑定到Integer,不需要static的实例来调用。

接下来,不要认为new方法的声明对于您的代码来说是司空见惯的。坦率地说,这代表纯粹的程序性编程(即,定义执行这些特定事物而不考虑状态的方法,而不是可能或可能不考虑状态的面向对象设计)

你唯一一次被迫声明某些东西是静态的,如果你自己在静态上下文中使用它。由于您没有创建类的实例(通过main关键字),因此您将无法使用您在其中声明的任何方法。

这不会编译,因为public class Foo { public static void main(String[] args) { invokeBar(); } public void invokeBar() { System.out.println("Yay, bar!"); } } 没有办法引用该方法。

main

下面的编译,因为public class Foo { public static void main(String[] args) { invokeBar(); } public static void invokeBar() { System.out.println("Yay, bar!"); } } 确实可以直接调用该方法:

{{1}}