JAVA static 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 06:21:33
class A {
static {
System.out.println("i am static");
}
static int i = 3;
A() {
System.out.println("constructor");
}
}

public class TestStatic {
public static void main(String[] args) {
System.out.println("start");
}
static A a = new A();
}
显示如下:
i am static
constructor
start

但是如果把最后一句改成 A a = new A(); 显示为
start

我的疑问是,同样都是创建了A这个类的一个对象,为什么后面这个情况不会执行A中的static成员呢?
我好象懂了!
原因是我还没有实例化一个TestStatic对象

不知道是不是这个原因哈

呵呵

static A a = new A(); 在TestStatic类中
当你调用main方法时,会使用到这个类,首先它会判断有没有继承自其他类,当然你这里没有,然后会初始化静态变量,对于你的程序就是static A a = new A(); ,(当变为A a = new A();,因为他不是静态的,所以只有实例化TestStatic才会初始化它。)然后才调用main方法