黑马-许鹏 发表于 2013-5-29 15:30 ![]()  
静态成员先执行,因为静态代码块中有可能要引用静态成员变量。  
既然是静态成员先执行,那为何我这样写: 
static  
{ 
      System.out.println("我是静态代码块"+country); 
} 
static String country = "china"; 
     系统会报错“错误: 非法前向引用”,按照你的逻辑,静态成员先执行,那么我这两个代码的先后顺序就没有关系,因为静态成员已经执行了,那么静态代码块写在前面,仍然是可以调用country的,可实际结果却并非如此,静态代码块写在country前面系统会报错。 
   会不会是这样,静态代码块和静态成员变量是相同级别,但是按它们的先后顺序来执行?? |