public class DotNew {
{ System.out.println("ccccc"); }
DotNew(){
System.out.println("ddddd");
}
public class Inner{
{
System.out.println("aaaaa");
}
public Inner(){
System.out.println("saadfasdf");
}
}
public static void main(String[] args){
System.out.println("eeee");
DotNew dn = new DotNew();
System.out.println("bbbb");
DotNew.Inner in = dn.new Inner();
}
}
// 特别是这样的语句是什么意思 { System.out.println("ccccc"); }
{ System.out.println("ccccc"); }
DotNew(){
System.out.println("ddddd");
}
public class Inner{
{
System.out.println("aaaaa");
}
public Inner(){
System.out.println("saadfasdf");
}
}
public static void main(String[] args){
System.out.println("eeee");
DotNew dn = new DotNew();
System.out.println("bbbb");
DotNew.Inner in = dn.new Inner();
}
}
// 特别是这样的语句是什么意思 { System.out.println("ccccc"); }
eeee
ccccc
ddddd
bbbb
aaaaa
saadfasdf
main函数中首先打印出eeee字符串,继续执行时,由于(静态)语句块先于构造函数执行,先打印出ccccc后打印ddddd,继续执行如上面所述。由于此处为非静态语句块,在实例化类的时候才会调用,所以ccccc在eeee之后,若前面加有static关键字,则其会在编译的时候打印输出,此时ccccc字符串会先于eeee打印。
public class DotNew{
static{
System.out.println("ccccc");
}
DotNew(){
System.out.println("ddddd");
}
public class Inner{
{
System.out.println("aaaaa");
}
public Inner(){
System.out.println("saadfasdf");
}
}
public static void main(String[] args){
System.out.println("eeee");
DotNew dn = new DotNew();
System.out.println("bbbb");
DotNew.Inner in = dn.new Inner();
}
}
结果为:
ccccc
eeee
ddddd
bbbb
aaaaa
saadfasdf