public class testStatic{
    
    static{
        a=4;
        //System.out.println(a);
    }
    static final int a;    public static void main(String args[]){        
        System.out.println(a);
    }
}执行顺序依次是: 声明静态变量->静态代码块->主方法的打印语句  是吗?是的话为什么在注释处static代码块里不能打印a呢?已经定义过了啊?

解决方案 »

  1.   

    public class Test{  static final int a;    
      static{
      a=4;
      System.out.println(a);
      }  public static void main(String args[]){   
      System.out.println(a);
      }
    }
      

  2.   

    static final int a;
    final的变量在程序中不能修改.!
      

  3.   

    你违背了变量必须先定义后使用的原则
    在static块内部的变量a,在使用之前必须先定义
      

  4.   


    执行顺序依次是: 声明静态变量->静态代码块->主方法的打印语句 是吗?
    声明静态变量和静态代码块那个前面那个执行
      

  5.   


    public class testStatic{
     
        static{
            a=4;
        }
        static final int a;
        public static void main(String args[]){        
            System.out.println(a);
        }
    }
    这样也可以啊?
      

  6.   

    public class testStatic{  
      static{
      a=4;
      }
      static final int a;
      public static void main(String args[]){   
      System.out.println(a);
      }
    }
    为什么这样写也可以?
      

  7.   

    楼上 是 错误的
    执行顺序跟你摆放代码的位置是有关系的
    5楼 正确
    并且    静态变量和静态初始化块 >变量和初始化块 同级之间跟你摆放代码的位置是有关系的
    不同级之间跟你摆放代码的位置无关  静态变量和静态初始化块 >变量和初始化块