执行Java程序从哪一行开始?这是主要方法吗?

时间:2013-04-07 14:34:10

标签: java main execution

从哪里开始执行java程序?我听到有人用主法说出来。我认为执行从静态块开始。我是对的吗?

6 个答案:

答案 0 :(得分:4)

该程序的输出:

public class XXX {

    static YYY dependend = new YYY();

    static {
        System.out.println("3");
    }

    public static void main(String[] args) {
        System.out.println("4");
    }
}

class YYY {
    static {
        System.out.println("1");
    }
    YYY(){
        System.out.println("2");
    }
}

当然是

1
2
3
4

所以:你的程序的入口点main。但是之前有代码执行。并且不需要这个“在main之前执行”代码在同一个类中。并且此代码也不需要在静态初始化器中(参见“2”)。

答案 1 :(得分:2)

主要方法是程序的入口点。如果包含“main”方法的类具有需要初始化的静态成员或静态代码块,则将在“main”方法之前执行。

请看这个示例代码:

public class Test {

    private static Object obj = new Object();

    public static void main(String[] args) {

        System.out.println("test");
    }

}

如果在对象初始化行中放置一个断点,您将看到它在println行之前运行。

答案 2 :(得分:0)

这是java程序的start方法:

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

答案 3 :(得分:0)

初始化类时执行静态块。对于包含main方法的类,它将在调用此方法之前,因为必须在使用任何方法之前初始化类。对于其他类,如果不需要初始化类,则可以更晚或永远。

答案 4 :(得分:0)

Java应用程序通常由main方法初始化:

public static void main(String... args){
    System.out.println("Executing my application...");
}

当JVM加载类时,将执行静态块。如果没有main方法,您将无法启动应用程序,否则JVM将显示错误消息 理论上可以使用静态块(example)执行代码。但这是初始化应用程序的一种不好的方法,因为doSomethingElse方法可能被另一个脚本调用,该脚本不想创建gui(或者你在初始化方法中做的任何事情)。例如:

class Test2 extends Object{
    public static void doSomething(){
        System.out.println("Calling Test's doSomethingElse method.");
        Test.doSomethingElse();
    }
}

Test2的doSomething方法只想调用doSomethingElse,但是也会调用创建GUI的方法,因为JVM加载了类Test。当JVM加载一个类 - 并且该类有一个静态块 - 静态块将在第一次调用。 Test的静态块现在调用executingClass方法并创建GUI(但Test2只想调用doSomethingElse

最后,您不应该使用静态块来初始化您的应用程序:

  1. 静态块只应用于创建该类所需的内容。
  2. main方法也是必需的。
  3. 可能会产生不可预测的影响。

答案 5 :(得分:0)

如果一个类包含静态块和main方法(),则jvm将首先执行静态块,然后再执行main方法。 但是,如果您没有在类中提及静态块,并且该类仅包含main方法,那么jvm仅从main方法开始执行。