static funal int[] a;
static {
   a = new int[2];
   a[0] = 100;
   a[1] = 200;
}这样是可以的吗?不是申明和创建要一起吗?第二个static是什么意思?

解决方案 »

  1.   

    用static修饰变量是全局变量,在静态代码块中当然能访问static变量,static修饰的方法是不需要创建对像就得用访问的,在加载类的过程中完成静态变量和方法的内存分配
      

  2.   

    第二个static是一个静态代码块
    申明和创建是两码事,不必要一起
    funal --- > final
      

  3.   

    答:
    第一种:
    static final int[] a; 
    static { 
      a = new int[2]; 
      a[0] = 100; 
      a[1] = 200; 
    } 第二种: 
    static final int[] a={100,200};
    两种是等价的.
    第二种方法,在编译时,就是转成第一种进行处理的(但更优化与高效.)
      

  4.   

    第二个static是一个静态代码块
    申明和创建是两码事
      

  5.   

    申明和创建不必一起,第二个static是静态块
      

  6.   

     
    static funal int[] a;  //声明,由于是final修饰的,只能被赋值一次。
    static { 
      a = new int[2];    //定义
      a[0] = 100; 
      a[1] = 200; 
    } 第二个static是修饰静态,   就是当你在类加载(不只是new构造的时候,"类名. "也是加载,还有Class.forName("类名")的时候也算类加载),就会自动执行static修饰的属性,或者代码块,或者方法。应该明白了吧?
      

  7.   

    第二个static是一个静态代码块 
    申明和创建是两码事
      

  8.   

    这关系到代码块的运行效率问题 在Effecti java一书中的第四条建议就指出,避免创建重复的对象。