62,614
社区成员
发帖
与我相关
我的任务
分享
public class OrderTest {
public static void main(String[] args) {
new Child();
}
}
class Parent{
static {
System.out.println("parent static block");
}
public Parent(){
System.out.println("parent constructor");
}
}
class Child extends Parent{
static {
System.out.println("child static block");
}
public Child(){
System.out.println("child constructor");
}
}
public class StaticTest {
private static StaticTest st = new StaticTest();
public static int count1;
public static int count2 = 0;
static{
count1++;
count2++;
}
public StaticTest()
{
count1++;
count2++;
}
public static StaticTest getInstance()
{
return st;
}
public static void main(String[] args)
{
StaticTest st = StaticTest.getInstance();
System.out.println("count1: " + StaticTest.count1);
System.out.println("count2: " + StaticTest.count2);
}
}
//private static StaticTest st=new StaticTest
public static int count1;//自动初始化为0
public static int count2=0;//自动初始化为0 public static int count2=0;
private static StaticTest st = new StaticTest(); //为什么讲这句代码移到这个位置结果就为2 2呢
private static StaticTest st = new StaticTest();
他会调用构造函数,然后再继续初始化:
static{
st = new StaticTest(); //代码搬到这
count2 = 0; //代码搬到这
count1++;
count2++;
}
private static StaticTest st = new StaticTest();
public static int count2 = 0;
static{
count1++;
count2++;
}