有这么两个程序,程序1:classInsect{privatestaticintx1=printInit("staticInsect.x1initialized");staticintprintInit(Strings){System.out.println(s);return47;}}publicclassBeet...
有这么两个程序,
程序1:
class Insect{
private static int x1=printInit("static Insect.x1 initialized");
static int printInit(String s){
System.out.println(s);
return 47;
}
}
public class Beetle extends Insect{
private static int x2=printInit("static Beetle.x2 initialized");
public static void main(String[] args){}
}
程序2:
class Bowl{
Bowl(int marker){
System.out.println("Bowl ("+marker+")");
}
}
class Table{
static Bowl bowl1= new Bowl(1);
static Bowl bowl2= new Bowl(2);
}
public class StaticInitialization {
public static void main(String[] args){}
}
输出结果:
程序1:
static Insect.x1 initialized
static Beetle.x2 initialized
程序2:
无
问题:
static是在程序开始之前就会被初始化的。那么同样身为static变量,在Beetle中,x1与x2就得到了初始化(因为有输出),但在Bowl中,
static Bowl bowl1= new Bowl(1);
static Bowl bowl2= new Bowl(2);
似乎就没有被初始化呢?因为如果初始化了,应该会有如下输出
Bowl (1)
Bowl (2)
不大明白,请高手解释一下,谢谢~
展开