class WaterSource {
  private String s;
  WaterSource() {
    System.out.println("WaterSource()");
    s = new String("Constructed");
  }
  public String toString() { return s; }
}public class SprinklerSystem {  private String valve1, valve2, valve3, valve4;
  private WaterSource source;
  private int i;
  private float f;
  public String toString() {
    return
      "valve1 = " + valve1 + "\n" +
      "valve2 = " + valve2 + "\n" +
      "valve3 = " + valve3 + "\n" +
      "valve4 = " + valve4 + "\n" +
      "i = " + i + "\n" +
      "f = " + f + "\n" +
      "source = " + source;
  }
  public static void main(String[] args) {    SprinklerSystem sprinklers = new SprinklerSystem();    System.out.println(sprinklers);
    
  }
} 请帮我解释一下  System.out.println(sprinklers);为什么会打出valve1 = null
      valve2 = null",
      valve3 = null",
      valve4 = null",
      i = 0
      f = 0.0",
      source = null"
这些呢?
而下是sprinklers@address
toString方法我并没有主主动去调用啊
请大家帮帮我

解决方案 »

  1.   

    System.out.println(sprinklers);调用对象的toString(); 如果没有重载toString(),则调用Object的toString()
      

  2.   

    其实你可以自己找到答案的:
    System.out.println(obj) --> PrintStream.println(obj), println(obj)--> String.ValueOf(obj) 再看看String.ValueOf(obj)的说明。
      

  3.   

    其实你可以自己找到答案的:
    System.out.println(obj) --> PrintStream.println(obj), println(obj)--> String.ValueOf(obj)再看看String.ValueOf(obj)的说明。