static应该是在初始化时候执行,不是调用的时候执行,可以说是在编译的时候。

解决方案 »

  1.   

    static方法是什么时候执行?
    是编译的时候还是调用的时候执行。方法被定义为static就表示这个方法不需要声明类的实例即可执行;比如main方法。而某个类成员被定义为static的时候,它就几乎完全独立于这个类了。
    根据think in java2 还有java参考大全中所述,static方法在类刚刚被加载的时候就执行了。
    因此,可以说,static方法是在对程序进行解释的时候执行。
    比如
    class UseStatic{
        static int a = 3;
        static int b;    static void meth(int x)
        {
            System.out.println("x = " + x);
            System.out.println("a = " + a);
            System.out.println("b = " + b);
            
        }    static {
            System.out.println("Static block initialized.");
            b = a*4;
        }
        public static void main(String[] args)
        {
            meth(42);
        }
    }
    一旦UseStatic被装载,所有的static语句被执行。首先,a被设置为3,接着static块执行(打印一条消息),最后,b初始化为a*4或12。然后调用main(),main()调用meth(),把42传递给x。3
    个println()语句引用两个static变量a和b,以及局部变量x。
      

  2.   

    同意" guoxiaoshou2000(狼骑兵)"的看法--static在类被加载的时候就执行。
      

  3.   

    static方法当时是被调用的时候执行啊,呵呵
    要说static块语句是在类的构造方法之前执行
      

  4.   

    static method是在调用的时候执行的
    static{}就是在类装载的时候执行的
      

  5.   

    classjava(原始野人) 哈哈哈·········你终于到星了啊·····散吧··········
      

  6.   

    除了构造方法,static方法也是一样的,在调用的时候执行,只是不需要new就能调用了,自己写个小demo测试一下就知道了啊
      

  7.   

    同意" guoxiaoshou2000(狼骑兵)"的看法--static在类被加载的时候就执行。
    且它执行比构造器还要先!
      

  8.   

    是不是说static方法也实在调用的时候执行,但是需要static方法参与初始化的时候,相关的static方法就会在编译的时候执行。static块和static属性是一个待遇,都是在编译的时候就要执行对不对?
      

  9.   

    这个问题前几天我也遇到过,我个人认为应该是这样的:它是在类的第一次加载的时候会对成员属性进行初始化,每次加载的时候首先要执行static方法.
    class test
    {
      public static int i=method1();
      private static int j=method2();
      public static int method1()
     {
      System.out.println("test.method1");
      return 4;
     }
     private static int method2()
     {
      System.out.println("test.method2");
      return 6;
     }
    }public class test1 extends test
    {
      int e=method3();
      static int w=method3();
      public static int method3()
      {
       System.out.println("test1.method3");
       return 6;
      }
      
      test1()
      {
       System.out.println("test1.test1()");
      }  public static void main(String args[])
     {
      test1 t1=new test1();
      test1 t2=new test1();
     }
    }
    我想这个能说明一些问题吧
      

  10.   


    to:  gdp()
     请问,这样为什么就不运行method拉class test
    {
      public static int i=method1();
      private static int j=method2();
      public static int method1()
     {
      System.out.println("test.method1");
      return 4;
     }
     private static int method2()
     {  System.out.println("test.method2");
      return 6; }

     public class test1 {
     public static void main (String[]args) {
     
     String s = new String ("Hello");
     
     modify(s);
     
     System.out.println(s);
     } public static void modify (String s) {
     s += "world!";
     System.out.println(s);
      }
     }