我的高中有一个计算机编程-K课程,我们使用Java作为我们的语言。我注意到你似乎需要在每个脚本的开头都有public *static* void main(String[] args)
。我们的主要结构是:
public class
( void main()
void input()
void process()
void output() )
我们必须使所有void方法都是静态的,才能相互调用,因为我们不能使用非静态main。为什么? Java中静态意味着什么?
答案 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)
首先,main
被public static void
强制要求main
:
方法
public
必须声明为static
,void
和String
。它必须指定一个形式参数(第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}}