没有名字的Java构造函数?
当我运行以下代码时,我得到的输出是:没有名字的Java构造函数?,java,constructor,Java,Constructor,当我运行以下代码时,我得到的输出是: static block TEst block main block 字符串“测试块”是如何打印的?它被认为是构造函数吗 public class TestBlk { static { System.out.println("static block"); } { System.out.println("TEst block"); } public static void main(String args[]){ TestB
static block
TEst block
main 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");
}
}
它是一个实例初始化器和一个默认构造函数
没有显式构造函数的类被赋予了一个合成的、公共的、无参数的构造函数
没有调用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");
}
}
当您调用
newtestblk()
时,它作为对象构造的一部分被调用,您在这里拥有的东西被称为:初始化块
初始化块是一个
执行的大括号之间的代码
在类的对象
创造
有两种类型的初始化块:
{
系统输出打印LN(“试块”);
}
静态
{
System.out.println(“静态块”);
}
{
System.out.println("TEst block");
}