程序代码如下:
class WaterSource{
private String s;
WaterSource(){
System.out.println("WaterSource()");
s=new String("Constructed");
}
public String toString(){
return s;
}
}
public class SprinklerSystem{
private String value1,value2,value3,value4;
WaterSource source;
int i;
float f;
void print(){
System.out.println("value1= " + value1);
System.out.println("value2= " + value2);
System.out.println("value3= " + value3);
System.out.println("value4= " + value4);
System.out.println("i= " + i);
System.out.println("j= " + f);
System.out.println("source= " + source);
}
public static void main(String[] args){
SprinklerSystem x=new SprinklerSystem();
x.print();
}
}输出结果为:
valve1=null
valve2=null
valve3=null
valve4=null
i=0
f=0.0
source=null我想问的是WaterSource的构造函数为什么没有执行,为什么没有打印“WaterSource()”?
System.out.println("source=" + source);这条语句具体是怎么执行的?
class WaterSource{
private String s;
WaterSource(){
System.out.println("WaterSource()");
s=new String("Constructed");
}
public String toString(){
return s;
}
}
public class SprinklerSystem{
private String value1,value2,value3,value4;
WaterSource source;
int i;
float f;
void print(){
System.out.println("value1= " + value1);
System.out.println("value2= " + value2);
System.out.println("value3= " + value3);
System.out.println("value4= " + value4);
System.out.println("i= " + i);
System.out.println("j= " + f);
System.out.println("source= " + source);
}
public static void main(String[] args){
SprinklerSystem x=new SprinklerSystem();
x.print();
}
}输出结果为:
valve1=null
valve2=null
valve3=null
valve4=null
i=0
f=0.0
source=null我想问的是WaterSource的构造函数为什么没有执行,为什么没有打印“WaterSource()”?
System.out.println("source=" + source);这条语句具体是怎么执行的?
当然不会执行构造函数...所以返回null啊
WaterSource source;
改为WaterSource source = new WaterSource();就执行构造函数了
WaterSource source;这句就相当于你 int i;一样,int的默认值是0,而引用的默认值是null,在这里source的值就是null.
我服了,问问题的人能不能勤快一点儿?
你不要这么说,就是上下问没有看明白才来问的。
不要说那些没有用的,向dragon525那样解释一下多好,我已经明白一点了。
你同有实例化,她的构造方法怎么会执行呢?
WaterSource source = new WaterSource();
这样就行了!