public class Mystery {
private String s;
public void Mystery() { //不是构造方法
s = "constructor";
}
void go() {
System.out.println(s);
}
public static void main(String[] args) {
Mystery m = new Mystery();
m.go();
}
}以上程序的打印结果为什么为null。
构造函数是没有没有返回值的,主要是为了区分构造函数和其它方法。其实,你在你的构造函数前加上void,你会发现编译可以通过(用eclipse的话有警告的<如下图>,翻译过来是这个方法有一个构造函数名)。
证明编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。
综上:去掉public void Mystery() { //不是构造方法s = "constructor";}中的void。
创建了这个对象时,要调用这个类的构造器,第三行的是个方法,去掉 void 是构造方法。
你的main方法都没有调用Mystery方法给s赋值。所以为空