main方法(你在类中的Java请求)必须是静态的吗?例如,我有此代码
public class Sheet {
public static void main(String[] args) {
myMethod();
}
public void myMethod() {
System.out.println("hi there");
}
}
这给了我错误
无法从 main 对非静态调用方法进行静态引用
如果我说清楚了,我从main
方法调用的任何方法都必须是静态的,我从静态方法调用的每个方法都必须是静态的。
为什么我的整个班级(如果我们更进一步,我的整个程序)和方法必须是静态的?我怎样才能避免这种情况?
并非所有方法都必须是静态的,只有应用程序的主入口点。所有其他方法都可以保持非static
,但您需要使用类的引用才能使用它们。
代码的外观如下所示:
public class Sheet {
public static void main(String[] args) {
Sheet sheet = new Sheet();
sheet.myMethod();
}
public void myMethod(){
System.out.println("hi there");
}
}
这里解释了您的担忧的解释(没有必要在这里复制所有信息):
- 为什么 Java 主方法是静态的?
- "静态"关键字在类中有什么作用?
- 通俗地说,"静态"在Java中是什么意思?
必须static
main
方法,因为这是程序中该运行配置的单一入口点。
static
方法绑定到类,因此它无法知道该类的单个实例。
您可以通过实例化Sheet
类来调用myMethod
:
new Sheet().myMethod();
创建一个实例:
public class Sheet {
public static void main(String[] args) {
Sheet sheet = new Sheet();
sheet.myMethod();
}
public void myMethod(){
System.out.println("hi there");
}
}
是的,main 方法必须是静态的,因为我们不会为 main 方法创建任何对象。静态方法可以在类加载时直接调用。由于它们是在类加载时加载的,因此我们不必为其创建任何对象!
众所周知,静态主要用于内存管理。所有静态方法和变量都可以直接使用类名访问。当然,我们可以为静态方法和变量创建对象来访问它们。但这是对记忆的浪费。
并非所有方法都需要是静态的。根据您的规定应用,我们可以使用静态方法。