以下几点解释了main()方法中的“静态”是什么:
null
- main()方法 :在Java中,main()方法是JVM(Java虚拟机)进入Java程序的入口点。JVM通过调用main()方法启动java程序。
- 静态是一个关键词 .在任何实体之前添加static的作用是使该实体成为类实体。这意味着在方法和变量之前添加static将使它们分别成为类方法和类变量,而不是实例方法和实例变量。 因此,静态方法和变量可以在类的帮助下直接访问,这意味着不需要创建对象来访问静态方法或变量。
// Making a function as staticstatic void func(){}// Making a variable as staticstatic int var;
- 静态方法: 当用static关键字声明一个方法时,它被称为static方法。如上所述,在创建其类的任何对象之前,可以访问任何静态成员,而无需引用任何对象。
// Making a static functionclass GfG{ static void func() {}}// Calling a static functionGfG.func();
- 静态main()方法: 当在main()方法的函数定义中添加static关键字时,它被称为static main()方法。
class GfG{ // Making a static main function public static void main(String[] args) {}}
main()方法中需要静态 :由于main()方法是任何Java应用程序的入口点,因此必须将main()方法设置为静态,原因如下:
- static main()方法使JVM可以非常清楚地调用它 用于启动Java应用程序 。否则,需要为每个Java应用程序构建指定入口函数,以便JVM启动应用程序。
- 该方法是静态的,因为否则会出现 模棱两可 应该调用哪个构造函数。 例如,如果类看起来像这样:
public class GfG{ protected GfG(int g){} public void main(String[] args){ }}
- JVM现在进入一个模糊状态,决定是否应该调用新的GfG(int)?如果是的话,那么g应该是什么?如果不是,那么JVM是否应该在不执行任何构造函数方法的情况下实例化GfG? 这样的边缘情况和模糊性太多了,JVM在调用入口点之前必须实例化一个类,这是没有意义的。这就是为什么main是静态的。
- main()方法是静态的,因为它对JDK很方便。考虑一个场景,它不强制使主()方法静态。在这种情况下,这只会使各种IDE更难自动检测项目中的“可启动”类。因此,将输入方法“main()”设置为“public static void main(String[]args)”是一种方便的约定。
如果我们不在main方法之前写“static”呢: 如果我们不在main方法之前写“static”,那么我们的程序将被编译而没有任何编译错误。但是在执行时,JVM会搜索主方法,它是公共的、静态的,返回类型和字符串数组作为参数。如果找不到这样的方法,则会在运行时生成错误。
爪哇
/*package whatever //do not write package name here */ import java.io.*; class GFG { public void main (String[] args) { System.out.println( "GFG!" ); } } |
输出: 错误信息如下所示
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END