主要方法(Java请求您在类中拥有)是否必须是静态的?例如,我有这个代码
public class Sheet {
public static void main(String[] args) {
myMethod();
}
public void myMethod() {
System.out.println("hi there");
}
}
这给了我错误
无法对main
中的非静态调用方法进行静态引用
如果我明白了,我使用main
方法调用的任何方法必须是静态,并且我从静态方法调用的每个方法必须静态。
为什么我的全班(如果我们更进一步,我的整个程序)和方法必须是静态的?我怎么能避免这个?
答案 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方法创建任何对象。并且可以在类加载时直接调用静态方法。因为它们是在加载类时加载的,所以我们不必为它创建任何对象!!
正如我们所知,静态主要用于内存管理。所有静态方法和变量都可以直接使用类名访问。当然,我们可以为静态方法和变量创建对象来访问它们。但这是对记忆的浪费。
并非所有方法都需要是静态的。根据您的规定应用,我们可以使用静态方法。