Java入門第二季 1-9 程序問題
在這個程序中,倒數第四行,我直接的訪問靜態方法,沒有通過類名訪問,也沒有通過對象名訪問,可還是得到了一個正確的結果,這是為什么呢?是碰巧嗎?有什么弊端嗎?
public?class?HelloWorld?{ ???? ????//?定義靜態變量score1 ????static?int?score1?=?86; ????//?定義靜態變量score2 static?int?score2?=?92;? ????//?定義靜態方法sum,計算成績總分,并返回總分 public?static????int?sum()?{? ??????int?sum=score1+score2; ??????return?sum; ?????? } public?static?void?main(String[]?args)?{ ???????? ????????//?調用靜態方法sum并接收返回值 int?allScore?=?sum();????//就是這里!?。。????????? System.out.println("總分:"?+?allScore); } }
2016-03-10
靜態是可以訪問靜態呀
2016-07-19
我用這個直接告訴我錯誤。。。
2016-03-10
我認為這是個必然的結果,也沒有什么弊端。因為不管是靜態變量還是靜態方法都是屬于類的一部分而不是對象的一部分,就是說屬于該類所有對象所共有的。且主函數也是static的,靜態的方法可以調用靜態的方法,不可調用非靜態方法。因此代碼能運行不出錯。但為了代碼的方便易懂、規范性,一般都是用類名.靜態方法的調用方式,即HelloWorld.sum()。以上是我的個人見解,如有更好答案請分享下,謝謝!
2016-03-10
因為java代碼的執行順序是從上到下執行的 又因為sum()方法是靜態方法已經在靜態池中存入allScore 所以你在這個時候調用allScore是有值得