關(guān)于構(gòu)造方法
public?class?Mystery?{ private?String?s; public?void?Mystery()?{?//不是構(gòu)造方法 s?=?"constructor"; } void?go()?{ System.out.println(s); } public?static?void?main(String[]?args)?{ Mystery?m?=?new?Mystery(); m.go(); } }
以上程序的打印結(jié)果為什么為null。
2016-07-19
構(gòu)造函數(shù)是沒有沒有返回值的,主要是為了區(qū)分構(gòu)造函數(shù)和其它方法。其實,你在你的構(gòu)造函數(shù)前加上void,你會發(fā)現(xiàn)編譯可以通過(用eclipse的話有警告的<如下圖>,翻譯過來是這個方法有一個構(gòu)造函數(shù)名)。
證明編譯器把它認為是方法,而不是構(gòu)造函數(shù),當然也無法在new的時候自動調(diào)用。
綜上:去掉public?void?Mystery()?{?//不是構(gòu)造方法s?=?"constructor";}中的void。
2016-07-19
創(chuàng)建了這個對象時,要調(diào)用這個類的構(gòu)造器,第三行的是個方法,去掉 void 是構(gòu)造方法。
2016-07-19
你的main方法都沒有調(diào)用Mystery方法給s賦值。所以為空