第1行 class Mystery{ 
第2行 String s; 
第3行    public static void main(String[] args){ 
第4行     Mystery m=new Mystery(); 
第5行     m.go();      
第6行   } 
第7行    void Mystery(){ 
第8行      s="constructor"; 
第9行   } 
第10行   void go(){ 
第11行     System.out.println(s); 
第12行   } 
第13行 }  
请教各位前辈,为什么输出的是null呢?运行顺序不是3-4-7-2-8-9-5吗?请前辈详细指点,迷惑中。。

解决方案 »

  1.   

     void Mystery(){ 
    s="constructor"; 

    把那个void去掉,不去掉的话变成了普通方法,去掉了变成构造函数,就是说new的时候就会执行这个函数,给s赋值,打印后就不会是null了.因为现在是普通方法,没执行到,所以后边的go是null
      

  2.   

    Mystery是方法还是类啊?你写的我没太明白再有,
    第7行    void Mystery(){ 
    第8行      s="constructor"; 
    第9行  }如果这是方法的话,你在里面对s进行赋值,你的Main方法里也没运行这个方法啊,那S怎么可能有值...
      

  3.   

    第7行    void Mystery(){ 
    第8行      s="constructor"; 
    第9行  } void Mystery  你搞清楚了什么才是构造函数了没?
      

  4.   

    汗。构造函数之前还有void呀?