当我们在java中加载一个类时,首先静态块被执行然后默认构造函数。但在下面的代码中,我观察到默认构造函数在静态块之前执行。
public class Hello {
private static Hello hello = new Hello();
public Hello() {
System.out.println("Hello Default Constructor");
}
static {
System.out.println("Hello Static Block");
}
public static Hello createHelloInstance() {
return hello;
}
}
主要类别:
public class MainTest {
public static void main(String a[])
{
Hello.createHelloInstance();
}
}
Output:
Hello Default Constructor
Hello Static Block
我需要了解其背后的基本概念。这是怎么回事。 ?
有人可以帮助我理解其背后的流程吗?
以与实例字段初始值设定项表达式插入构造函数相同的方式,静态字段初始值设定项表达式按出现顺序插入静态初始值设定项。
So
private static Hello hello = new Hello();
...
static {
System.out.println("Hello Static Block");
}
相当于:
private static Hello hello;
...
static {
hello = new Hello();
System.out.println("Hello Static Block");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)