下面这段代码是java编程思想中的一段。
package c04;//: c04:StaticInitialization.java
// Specifying initial values in a class definition.
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
import com.bruceeckel.simpletest.*;class Bowl {
  Bowl(int er) {
    System.out.println("Bowl(" + er + ")");
  }
  void f(int er) {
    System.out.println("f(" + er + ")");
  }
}class Table {
  static Bowl b1 = new Bowl(1);
  Table() {
    System.out.println("Table()");
    b2.f(1);
  }
  void f2(int er) {
    System.out.println("f2(" + er + ")");
  }
  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 er) {
    System.out.println("f3(" + er + ")");
  }
  static Bowl b5 = new Bowl(5);
}public class StaticInitialization {
  static Test monitor = new Test();
  public static void main(String[] args) {
    System.out.println("Creating new Cupboard() in main");
    new Cupboard();//(1)
    System.out.println("Creating new Cupboard() in main");
    new Cupboard();//(2)    t2.f2(1);
    t3.f3(1);
    monitor.expect(new String[] {
      "Bowl(1)",
      "Bowl(2)",
      "Table()",
      "f(1)",
      "Bowl(4)",
      "Bowl(5)",
      "Bowl(3)",
      "Cupboard()",
      "f(2)",
      "Creating new Cupboard() in main",
      "Bowl(3)",
      "Cupboard()",
      "f(2)",
      "Creating new Cupboard() in main",
      "Bowl(3)",
      "Cupboard()",
      "f(2)",
      "f2(1)",
      "f3(1)"
    });
  }
  static Table t2 = new Table();
  static Cupboard t3 = new Cupboard();
} ///:~
上面(1)、(2)两处new Cupboard()的时候为什么没有new Bowl呢?
因为static Bowl可以重复赋值,所以我想new多个Cupboard()的时候是不是每次都要给bowl赋值一次呢?那样的话就应该有相关的输出才对呀。有点不解

解决方案 »

  1.   

    static Bowl是类属性,所有的类实例共享,每次new Cupboard()不需要给bowl赋值。
      

  2.   

    static成员是只能初始化一次的,第一次初始化后,以后不会再初始化
      

  3.   


    static类型的是类的属性,而其他的则是对象的属性!
      

  4.   

    static成员只在类被第一次加载的时候初始化,而且只初始化一次,与对象实例化与否无关;
      

  5.   

    所有实例共享一个
    可以看看这里
    http://blog.sina.com.cn/s/blog_4ab057eb0100eary.html