日期:2014-05-20  浏览次数:20754 次

一个java初级的问题~~
变量的初始化顺序.
代码如下:

public   class   Main{
                public   Main()   {
        }
                public   static   void   main(String[]   args)   {

               
               
                //new   Insect();
                Insect.prt( "what   are   you   going   to   do? ");
                Insect.prt( "what   are   you   going   to   do? ");
               
        }
         
       
}
class   Insect{
        static   int   prt(String   s){
        System.out.println(s);      
        return   47;
        }
        int   i=prt( "this   is   i ");
        static   int   ii=prt( "this   is   ii ");
       
}
我想问的就是:1、在第一次访问静态函数的时候,是不是就是将这个类加载了?
                          2、如果加载了为什么只有执行上述注释的时候才会初始化i?

------解决方案--------------------
第一次没有加载,类调用类,应该实例化后才加载。
------解决方案--------------------
1。在第一次访问静态函数的时候,就将这个类加载,这个类中的静态变量就给分配内存了
2。你注释的部分是创建对象。当Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存,但是,类中的静态变量在该类被加载到内存时就分配相应的内存空间。