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