程序:
//组合的使用class SimpleObject {
  private String s;
  
  SimpleObject() {
    System.out.println("SimpleObject()");
    s = new String("Constructed");
  }
  
  public String toString() {
    return s;
  }
}public class CompositeObject {
  private String s1 = new String("Happy");
  String s2 = "Happy";
  String s3,s4;
  SimpleObject simpleObject;
  int i;
  
  CompositeObject() {
    System.out.println("Inside CompositeObject()");
    s3 = new String("Joy");
    i = 47;
    simpleObject = new SimpleObject();
  }
  
  void print() {
    if(s4 == null) s4 = new String("Joy");
    System.out.println("s1 = " + s1);
    System.out.println("s2 = " + s2);
    System.out.println("s3 = " + s3);
    System.out.println("s4 = " + s4);
    System.out.println("i = " + i);
    System.out.println("simpleObject = " + simpleObject);
  }
  
  public static void main(String[] args) {
    CompositeObject b = new CompositeObject();
    b.print();
  }
}疑问:为什么simpleObject = Constructed,而不是其他的结果呢?

解决方案 »

  1.   

    你有没有搞错,结果怎么可能是你这个
    //:
    Inside CompositeObject()
    SimpleObject()
    s1 = Happy
    s2 = Happy
    s3 = Joy
    s4 = Joy
    i = 47
    simpleObject = Constructed
      

  2.   

    结果:
    Inside CompositeObject()
    SimpleObject()
    s1 = Happy
    s2 = Happy
    s3 = Joy
    s4 = Joy
    i = 47
    simpleObject = Constructed
    但我想知道的是为什么simpleObject = construted,而不是simpleObject = 其它的?
    经过一个上午的查找,我终于知道是什么原因了。下面是我在书上看到的描述:对基本数据类型而言,变量的值就是基本数据的值;对引用数据类型则有所不同,变量实际上可以理解为保存的是一个地址,以这个地址开始的地方保存的是某个实例。
      

  3.   

    public String toString() {
        return s;
      }