不就是如果有静态变量就先处理静态变量,然后再处理non-static变量吗?楼主想问什么呀?

解决方案 »

  1.   

    你先贴出你认为的顺序来,我认为应该是Bowl(1);Bowl(2);Bowl(4);Bowl(5);Table();f(1);Bowl(3);Cupboard();f(2);
      

  2.   

    实例化的时候应该按照先初始化静态成员然后初始化非静态成员,然后在调用构造函数的顺序。
    编程思想里说的很清楚了“static成员只有在需要的时候进行初始化,如果没有创建Table对象,就永远不可能用到Table.b1或者Table.b2,因此也不会去创建static的Bowl b1和b2。”
    所以这里程序首先执行static Table t2 = new Table();显示Bowl(1) Bowl(2) Table() f(1)
    然后才执行static Cupboard t3 = new Cupboard();显示Bowl(4) Bowl(5) Bowl(3)
      

  3.   

    所以在创建第一个Table t2的时候,并没有创建Cupboard t3,当然Bowl(4) Bowl(5) ……会在f(1)之后了。
      

  4.   

    1、根据java编程思想“static成员只有在需要的时候进行初始化“,例如:如果没有创建Myclass对象,就永远不可能用到Myclass.b1,因此也不会去创建static的Bowl b1和b2。
    所以这里程序首先执行static Table t2 = new Table();显示Bowl(1) Bowl(2) Table() f(1)
    然后才执行static Cupboard t3 = new Cupboard();显示Bowl(4) Bowl(5) Bowl(3)
      

  5.   

    1、根据java编程思想“static成员只有在需要的时候进行初始化“,例如:如果没有创建Myclass对象,就永远不可能用到Myclass.b1,因此也不会去创建static的Bowl b1和b2。
    所以这里程序首先执行static Table t2 = new Table();显示Bowl(1) Bowl(2) Table() f(1)
    然后才执行static Cupboard t3 = new Cupboard();显示Bowl(4) Bowl(5) Bowl(3)