雪中_悍刀行
2016-07-19 18:01
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赋值。所以为空
Java入门第三季
409792 学习 · 4340 问题
相似问题