第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吗?请前辈详细指点,迷惑中。。
第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吗?请前辈详细指点,迷惑中。。
s="constructor";
}
把那个void去掉,不去掉的话变成了普通方法,去掉了变成构造函数,就是说new的时候就会执行这个函数,给s赋值,打印后就不会是null了.因为现在是普通方法,没执行到,所以后边的go是null
第7行 void Mystery(){
第8行 s="constructor";
第9行 }如果这是方法的话,你在里面对s进行赋值,你的Main方法里也没运行这个方法啊,那S怎么可能有值...
第8行 s="constructor";
第9行 } void Mystery 你搞清楚了什么才是构造函数了没?