java要先倒入类,再进行初始化阿!!!

解决方案 »

  1.   

    自己用
    System.out.println ("XXX");
    来检测。
      

  2.   

    说说执行顺序:
      java classpath . Test10执行时
    首先加载  Test10 类
    那么 第一个: static aa a = new aa(1);  会开始执行
    new aa(1) 执行时,  首先执行 : static Test10 k = new Test10();
    但是 , 因为 Test10 的静态加载方法已经在执行,(或者说,已经标记了 Test10 的一个静态加载标记标志!)同时,根据 java 规范, 静态初始话变量(段) 只执行一次,所以,此时,不再执行 
    Test10 的 静态初始化动作!那么此时,只能执行 
       
        aa b = new aa(2);
        aa b = new aa(4); 非静态初始化操作!也就是你所见到的头两个 aa2,aa4 语句了!
    接着的就很好理解了!
    Test10 的静态加载方法继续执行,
     System.out.println ("Test1Static");
     new aa(3);   // static Test10 k = new Test10(); 此时不再执行,因为已经执行过
    然后到 main 方法:
    System.out.println ("MainBegin");
    new Test10(); //
       此时会重新调用  
          aa b = new aa(2);
          aa b = new aa(4);
    就是这样啊!仔细看看我上面的说明,对照代码,应该会明白的!