可以在声明为static的方法中使用,其它类型的变量只
能在对象被实例化后才能使用。

解决方案 »

  1.   

    声明为static的变量在定义的地方被初始化,并且只能初始化一次。   也就是说如果你在一个方法里定义了一个static变量,当你第二次调用该方法时,该变量不被再次初始化。
      

  2.   

    hslinux(幻世龙),你不要胡说好不好。不知道就不要发言,最好研究研究java规范。
      

  3.   

    我不知道对不对哈:
    声明为static的话就只占用一份内存空间,不会改变。
    而且只是在class被装载的时候被初始化一次。
    可以在声明为static的方法中使用(我抄袭的)
    可以由所属的class调用
      

  4.   

    关于static对象的调用:1、java 找到Mouse.class,发现Mouse是由Rodent继承来的,就去找Rodent,然后装入Rodent,装入后,发现Rodent中有static属性即i,所以就给i初始化,打印出"initialize rodent static iRodent"2、java装入Mouse,发现其中有static属性c1,所以就给c1初始化,准备执行new Cat("c1 static"); 这时,它发现Cat中也有static 属性,所以要先初始化Cat中的i, 所以就打印"initialize cat static icat",而后,因为要初始化Cat的对象,所以在执行构造前,要先初始化这个对象的所有属性,于是j被初始化,打印出"initialize cat ns jcat",然后,执行Cat的构造,调用Cat(String s), 打印出 cat c1 static,至此Mouse中的c1初始化完成3、java开始执行Mouse.main(),打印出"main start"4、执行System.out.println(c1.j);,打印出225、执行 System.out.println(c1.i); 打印出266、执行new Mouse(),在执行这句前,发现Mouse从Rodent继承,去先构造Rodent的对象,初始化Rodent对象里面的属性j,于是打印出"initialize rodent ns jRodent",而后调用Rodnet的构造,打印出"Rodent initialize",再回到Mouse中,先构造一个Mouse对象,为对象分配内存,而后初始化属性,于是Mouse中的属性c2就被初始化了,即为c2构造一个Cat对象,这时Cat中的属性j先被初始化,于是打印initialize cat ns jcat,再然后,调用Cat的构造,打印出Cat c2 ns,最后,回到MOUSE中,调用Mouse的构造,打印出Mouse initialize7、所以结果是:Initialize rodent static i rodentinitialize cat static i catinitialize cat ns j catcat c1 staticmain start2226initialize rodent ns j rodentrodent initializeinitialize cat ns j catcat c2 nsmouse initialize--------------------------------------------------------------------------------
    class Rodent{
       Rodent(){
        System.out.println("Rodent initialize");
       }
     static int prt(String s){
      System.out.println(s);
       return s.length();
     }
     static int i=prt("initialize rodent static iRodent");
      int j=prt("initialize rodent ns jRodent");
    }
     
    class Cat{
     
     static int prt(String s){
       System.out.println(s);
       return s.length();
     }
      Cat(String s){
        System.out.println("cat"+s);
      }
          static int i=prt("initialize cat static icat");
         int j=prt("initialize cat ns jcat");
    }
     
    public class Mouse extends Rodent{
      static Cat c1=new Cat("c1 static");
      Cat c2=new Cat("c2 ns");
      public static void main(String[] args) {
       System.out.println("main start");
       System.out.println(c1.j);
        System.out.println(c1.i);
         new Mouse();
     
      }
       Mouse(){
         System.out.println("Mouse initialize");
       }
    }