Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么公共静态void main方法不能在实例化的类中自动运行?_Java_Main - Fatal编程技术网

Java 为什么公共静态void main方法不能在实例化的类中自动运行?

Java 为什么公共静态void main方法不能在实例化的类中自动运行?,java,main,Java,Main,我理解在我的起始类中,publicstaticvoidmain的意义——在程序运行时执行代码 我在网上读到的一些文章指出,任何类都可以有一个主类。我创建了从第一个类调用的第二个类,并创建了它的一个实例,但是第二个类主方法中的代码没有运行。我是不是误解了这个方法在一个非初级类的类中是如何工作的 public class Main { public static void main(String[] args) { aClass newClass = new aClass(

我理解在我的起始类中,
publicstaticvoidmain
的意义——在程序运行时执行代码

我在网上读到的一些文章指出,任何类都可以有一个主类。我创建了从第一个类调用的第二个类,并创建了它的一个实例,但是第二个类主方法中的代码没有运行。我是不是误解了这个方法在一个非初级类的类中是如何工作的

public class Main {

    public static void main(String[] args) {
        aClass newClass = new aClass();

    }
}

JVM在一个类上调用
main
方法(当然,除非您显式地调用它)

如果希望在实例化
aClass
时调用代码,则需要将代码移动到构造函数:

公共类aClass{
公共aClass(){
System.out.println(“你好”);
}
}
当然,也可以显式调用
aClass.main

公共类主{
公共静态void main(字符串[]args){
aClass.main(args);
}
}

JVM在一个类上调用
main
方法(当然,除非您显式地调用它)

如果希望在实例化
aClass
时调用代码,则需要将代码移动到构造函数:

公共类aClass{
公共aClass(){
System.out.println(“你好”);
}
}
当然,也可以显式调用
aClass.main

公共类主{
公共静态void main(字符串[]args){
aClass.main(args);
}
}

的确,“任何类都可以有一个主类”。但是不管有多少类有一个方法,只运行一个
main
方法

运行哪个
main
方法取决于应用程序的指定入口点,即通过
java name.of.class
运行代码时显式指示的入口点,或者JAR清单指示的入口点

相反,可以为类提供静态初始化块。第一次加载类时,此块将运行一次:

public class Main {
    public static void main(String[] args) {
        new aClass();
        new aClass();
    }
}

public class aClass{
    static {
        // Run only once!
        System.out.println("hello");
    }
}

即使您没有实例化您的类,但是(比如)调用它的静态方法,此代码也将运行。但是,如果代码中没有任何内容引用
aClass
,那么它的静态初始化器将不会运行。

确实,“任何类都可以有一个主类”。但是不管有多少类有一个方法,只运行一个
main
方法

运行哪个
main
方法取决于应用程序的指定入口点,即通过
java name.of.class
运行代码时显式指示的入口点,或者JAR清单指示的入口点

相反,可以为类提供静态初始化块。第一次加载类时,此块将运行一次:

public class Main {
    public static void main(String[] args) {
        new aClass();
        new aClass();
    }
}

public class aClass{
    static {
        // Run only once!
        System.out.println("hello");
    }
}

即使您没有实例化您的类,但是(比如)调用它的静态方法,此代码也将运行。但是,如果代码中没有任何内容引用
aClass
,那么它的静态初始化器将不会运行。

它就是不会运行。
main
方法可以在显式调用它时运行(例如
aClass.main(新字符串[0]);
),也可以在告诉JVM启动并运行它时运行。不过,在创建该类的新实例时,将运行构造函数。对此我有把握,但不能有超过2个主方法。。必须是一个@Andy Turner,但是我们不是必须有一个条目吗?如果我们启动一个java程序,我们可以通过显式运行
.class
-文件来启动它。此类必须包括
main
-方法,否则程序启动将失败。启动程序的是这个类,而且只有这个类的
main
-方法。如果我们运行一个
jar
-文件,我们要么显式地声明条目类(即包含
main
-方法的类),要么在jar的元信息中定义条目类。@HannahLee这根本不是真的。您可以有任意多个类。@HannahLee这就是为什么您必须明确地告诉JVM要运行哪个类:它不知道您希望它从哪个类开始,所以您可以指定它。在给定类中只能定义一个
main
方法,但可以在任何可以定义静态方法的类中放置
main
。您为JVM提供了类的名称,它调用该类中的
main
方法,但事实并非如此。
main
方法可以在显式调用它时运行(例如
aClass.main(新字符串[0]);
),也可以在告诉JVM启动并运行它时运行。不过,在创建该类的新实例时,将运行构造函数。对此我有把握,但不能有超过2个主方法。。必须是一个@Andy Turner,但是我们不是必须有一个条目吗?如果我们启动一个java程序,我们可以通过显式运行
.class
-文件来启动它。此类必须包括
main
-方法,否则程序启动将失败。启动程序的是这个类,而且只有这个类的
main
-方法。如果我们运行一个
jar
-文件,我们要么显式地声明条目类(即包含
main
-方法的类),要么在jar的元信息中定义条目类。@HannahLee这根本不是真的。您可以有任意多个类。@HannahLee这就是为什么您必须明确地告诉JVM要运行哪个类:它不知道您希望它从哪个类开始,所以您可以指定它。在给定类中只能定义一个
main
方法,但可以在任何可以定义静态方法的类中放置
main
。为JVM提供类的名称,它调用该类中的
main
方法。