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