首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个Java程序的运行流程,大家帮忙分析一下思路,共享,感谢解决方案

2012-01-30 
一个Java程序的运行流程,大家帮忙分析一下思路,共享,感谢//everrrc4.StaticInitialization/*初学java,对照

一个Java程序的运行流程,大家帮忙分析一下思路,共享,感谢
//everrr   c4.StaticInitialization
 
/*   初学java,对照输出自己分析了一下程序的运行顺序,
  *   请大家看看分析的对不,不对的话请指点,谢谢
*/
class   Bowl   {
    Bowl(int   marker)   {
        System.out.println( "Bowl( "   +   marker   +   ") ");
    }
    void   f(int   marker)   {
        System.out.println( "f( "   +   marker   +   ") ");
    }
}
 
class   Table   {
    static   Bowl   b1   =   new   Bowl(1);
    Table()   {
        System.out.println( "Table() ");
        b2.f(1);
    }
    void   f2(int   marker)   {
        System.out.println( "f2( "   +   marker   +   ") ");
    }
    static   Bowl   b2   =   new   Bowl(2);
}
 
class   Cupboard   {
    Bowl   b3   =   new   Bowl(3);
    static   Bowl   b4   =   new   Bowl(4);
    Cupboard()   {
        System.out.println( "Cupboard() ");
        b4.f(2);
    }
    void   f3(int   marker)   {
        System.out.println( "f3( "   +   marker   +   ") ");
    }
    static   Bowl   b5   =   new   Bowl(5);
}
 
public   class   StaticInitialization   {
    public   static   void   main(String[]   args)   {
        System.out.println( "Creating   new   Cupboard()   in   main ");
        new   Cupboard();
        System.out.println( "Creating   new   Cupboard()   in   main ");
        new   Cupboard();
        t2.f2(1);
        t3.f3(1);
    }
    static   Table   t2   =   new   Table();
    static   Cupboard   t3   =   new   Cupboard();
}   //everrr.

 


这个是输出结果:  
123456789101112131415161718192021
  Bowl(1)       //static的初始化是最先进行的,所以static   Table     t2     =   new   Table     ();   先运行,创建Table类的对象,于是Table
                        //类里的2个static的初始化运行,并且先于f2()和构造函数,于是static的b1   和b2最先被创建
            Bowl(2)
            Table()       //在static的b1和b2被创建并有Bowl()输出之后,Table的构造函数运行,输出Tabel(),并出数f(1)
            f(1)             //此时,和static   Table   t2   =   new   Table();相关的动作结束
            Bowl(4)       //static   Cupboard   t3   =   new   Cupboard();创建Cupborard类的对象t3,   于是class   Cupboard里的
                                //static初始化优先运行,输出b4和b5,


            Bowl(5)
            Bowl(3)       //然后是非static的b3
            Cupboard()//然后是其构造函数
            f(2)             //此时,和static   Cupboard   t3   =   new   Cupboard();相关的动作结合;
            Creating   new   Cupboard()   in   main   //main中的2个static结束之后,运行打印动作
            Bowl(3)       //new   Cupboard();   由于static数据只能被初始化一次,所以这次只显示Bowl(3)
            Cupboard()//然后是其构造函数
            f(2)
            Creating   new   Cupboard()   in   main//第2次同上
            Bowl(3)
            Cupboard()
            f(2)
            f2(1)
            f3(1)

 
            来源http://www.chinajavaworld.com


[解决办法]
调用顺序:静态成员初时化-> 普通成员初始化--> 构造函数--> 其他调用
[解决办法]
没错
[解决办法]
路过,顶下
[解决办法]
绝顶
[解决办法]
写得不错哦。
很有前途
[解决办法]
好样的,加油,你一定行的!
[解决办法]
3q
[解决办法]
再接再厉!
[解决办法]
不错
[解决办法]
牛×的人
[解决办法]
向楼主学习了!
[解决办法]
不错
[解决办法]
lz就是我们学习的榜样!

热点排行