gpt4 book ai didi

java - java是否在内部创建持有main方法的类的对象?

转载 作者:行者123 更新时间:2023-12-02 02:36:49 26 4
gpt4 key购买 nike

众所周知,如果我们想创建对象,我们需要做一些事情:

class MyClass{
// ...
}

为了创建它的对象,我们这样做:

MyClass MyObj = new MyClass();

现在,如果我们想用 java 创建一个程序,我们需要在 class 中有一个 main 方法,并且 class 应该具有与文件名相同的名称。

例如:

// file MyFile.java
public class MyFile{
public static void main(String[] args){
// ...
}
}

现在的问题是,当该程序运行时,MyFile类的对象是否也会由java内部创建,以便通过以下方式开始执行java文件调用 main 方法还是静态调用 main 方法:

MyFile.main(String[] args);

如果我将 MyFile 类中的类设置为:

public class MyFile{

class HelloWorld{
// ...
}

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

或者具有非静态属性和方法:

public class MyFile{

int x = 10;

public void MyWorld(){
// ...
}

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

int y = 10;

public void ByeWorld(){
// ...
}

}

等等等等

现在,情况会怎样? java 会在内部创建 MyFile 类的对象吗?在这些类型的情况下,java 将执行哪些操作,以便在 main 方法的帮助下运行程序,并加载之前和之后的其他内容main 方法?在这些情况下,java 内部会执行什么操作?

最佳答案

JVM 启动时不会自动创建该类的实例。 main 方法只是静态调用 - 这就是为什么它首先必须是静态的。

该类已初始化,因此如果您有一个静态初始化程序,将在main方法之前执行,但没有实例将构建该类。没有必要这样做,而且会带来不必要的麻烦。 (例如,如果您只包含带参数的构造函数,您会期望发生什么?)

JVM启动的更多详细信息,请参见chapter 12 of the Java Language Specification .

关于java - java是否在内部创建持有main方法的类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53890286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com