gpt4 book ai didi

没有名字的Java构造函数?

转载 作者:行者123 更新时间:2023-11-29 09:40:04 26 4
gpt4 key购买 nike

当我运行下面的代码时,我得到的输出是:

static block
TEst block
main block

如何打印字符串“TEst block”?它是否被视为构造函数?

public class TestBlk {

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

{
System.out.println("TEst block");
}


public static void main(String args[]){
TestBlk blk=new TestBlk();
System.out.println("main block");

}
}

最佳答案

它是一个实例初始化程序,还有一个默认构造函数。

一个没有显式构造函数的类,被赋予一个合成的、公共(public)的、无参数的构造函数。

没有调用 this()super()(可能带有参数)的构造函数会隐式调用 super() (没有参数,内部类可能会发生一些奇怪的事情)。

在对 super() 进行隐式或显式调用后,字段初始化器和实例初始化器中的所有代码立即按照其在源代码中出现的顺序插入。

所以在 javac 完成你的代码后,它看起来有点像:

public class TestBlk {

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

public TestBlk() {
// Call constructor of java.lang.Object.
super();

// From instance (and field)initialiser.
System.out.println("TEst block");

// Rest of constructor:
}


public static void main(String args[]){
TestBlk blk = new TestBlk();
System.out.println("main block");
}
}

关于没有名字的Java构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717806/

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