Static 问题 请教~~
我想一下 这个 程序的具体执行过程,谢谢!
为什么会出现以下结果.谢谢!!
结果:
Cup(1)
Cup(2)
Cups()
Cups()
Inside main()
f(99)
程序:
class Cup
{
Cup(int marker)
{
System.out.println( "Cup( " + marker + ") ");
}
void f(int marker)
{
System.out.println( "f( " + marker + ") ");
}
}
class Cups
{
static Cup c1;
static Cup c2;
static
{
c1 = new Cup(1);
c2 = new Cup(2);
}
Cups()
{
System.out.println( "Cups() ");
}
}
public class ExplicitStatic
{
public static void main(String[] args)
{
System.out.println( "Inside main() ");
Cups.c1.f(99); // (1)
}
static Cups x = new Cups(); // (2)
static Cups y = new Cups(); // (2)
} ///:~
------解决方案--------------------先执行
static Cups x = new Cups(); // (2)
static Cups y = new Cups(); // (2)
在Cups中执行static块
c1 = new Cup(1);
c2 = new Cup(2);
而他们都是static的,所以只有一个实例
即只输出一次
Cup(1)
Cup(2)
然后执行Cups的构造函数,输出x和y各一次构造函数输出
Cups()
Cups()
再接着执行 ExplicitStatic的main函数
输出Inside main()
而后执行f函数输出f(99)
------解决方案--------------------合一下:
huojicq() ( )
new一个对象,先执行类的static域,再执行实例域,再执行构造方法
believefym(feng) ( )
有main函数的类也一样