我试图了解我的代码的调用顺序。有人,请说明通话顺序。
public class MainWithStaticCalls
{
static
{
String[] str = {"1", "2"};
System.out.println("Static");
main(str);
}
{
System.out.println("Init block");
}
void MainWithStaticCalls()
{
System.out.println("constructor");
}
public static void main(String[] a)
{
MainWithStaticCalls obj = new MainWithStaticCalls();
NewClass nc = new NewClass();
nc.callMe();
System.out.println("Main");
}
}
class NewClass
{
public void callMe()
{
System.out.println("I'm called");
}
}
据我了解,静态块将在JVM开始执行后立即执行,甚至在主类之前也将执行。然后实例init块将被执行。然后构造函数应该被执行。但是,如果我们从静态字段中调用main方法,则回调的工作方式。哪个主体将首先执行,JVM正常执行的主体或静态字段显式调用的主体。
My output:
Static
Init block
I'm called
Main
Init block
I'm called
Main
PS:我已经修改了我的问题。之前我将普通方法与构造函数混淆,因此一些答案可能看起来无关紧要,但这确实有助于我理解问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。