Java中的main方法是否必须是静态的?

时间:2015-01-27 15:03:04

标签: java methods static main

主要方法(Java请求您在类中拥有)是否必须是静态的?例如,我有这个代码

public class Sheet {

    public static void main(String[] args) {
        myMethod();
    }

    public void myMethod() {
        System.out.println("hi there");
    }

}

这给了我错误

  

无法对main

中的非静态调用方法进行静态引用

如果我明白了,我使用main方法调用的任何方法必须是静态,并且我从静态方法调用的每个方法必须静态

为什么我的全班(如果我们更进一步,我的整个程序)和方法必须是静态的?我怎么能避免这个?

4 个答案:

答案 0 :(得分:10)

并非所有方法都必须是静态的,只是应用程序的主入口点。所有其他方法都可以保持非static,但您需要使用类的引用来使用它们。

以下是您的代码的样子:

public class Sheet {
    public static void main(String[] args) {
        Sheet sheet = new Sheet();
        sheet.myMethod();
    }

    public void myMethod(){
        System.out.println("hi there");
    }
}

此处解释了您的疑虑解释(此处无需重复所有信息):

答案 1 :(得分:3)

您的main方法必须为static,因为这是您的程序中针对该运行配置的单一入口点。

static方法绑定到类,因此无法知道该类的单个实例。

您可以通过实例化myMethod类来调用Sheet

new Sheet().myMethod();

答案 2 :(得分:2)

创建一个实例:

public class Sheet {

    public static void main(String[] args) {
        Sheet sheet = new Sheet();
        sheet.myMethod();
    }

    public void myMethod(){
        System.out.println("hi there");
    }
}

答案 3 :(得分:1)

是的,main方法必须是静态的,因为我们不会为main方法创建任何对象。并且可以在类加载时直接调用静态方法。因为它们是在加载类时加载的,所以我们不必为它创建任何对象!!

正如我们所知,静态主要用于内存管理。所有静态方法和变量都可以直接使用类名访问。当然,我们可以为静态方法和变量创建对象来访问它们。但这是对记忆的浪费。

并非所有方法都需要是静态的。根据您的规定应用,我们可以使用静态方法。