以下內(nèi)容來(lái)自:http://book.csdn.net/bookfiles/170/1001707575.shtml

return語(yǔ)句

return語(yǔ)句是用來(lái)退出方法的跳轉(zhuǎn)語(yǔ)句:

只要遇到return語(yǔ)句,方法就在那一行代碼停止執(zhí)行,執(zhí)行控制將立刻返回到調(diào)用該方法的代碼處。

????????? 對(duì)于返回值類(lèi)型為void的方法,return關(guān)鍵字單獨(dú)作為完整的語(yǔ)句使用:

然而,對(duì)于返回類(lèi)型為void的方法,return;語(yǔ)句是可選的。如果省略這條語(yǔ)句,隱含表明方法的最后一行有一個(gè)return;語(yǔ)句。即,下面兩個(gè)版本的doSomething方法是等價(jià)的:

另一方面,對(duì)于返回類(lèi)型非void的方法體,必須至少包括一條明確的return語(yǔ)句。這種情況下,return關(guān)鍵字后面必須跟隨一個(gè)求值類(lèi)型和方法聲明的返回類(lèi)型一致的表達(dá)式。例如,如果方法定義為具有int返回類(lèi)型,那么下列任何一種return語(yǔ)句都可以接受:

等等。另一個(gè)例子,如果方法定義為具有boolean返回類(lèi)型,那么下列任何一種return語(yǔ)句都可以接受:

方法體可以包含不只一條return語(yǔ)句。但好的編程習(xí)慣是一個(gè)方法中只在最末尾包含一條return語(yǔ)句。再看一下前面討論過(guò)的isHornorsStudent方法,這個(gè)方法有兩條return語(yǔ)句:

使用局部boolean變量result來(lái)重寫(xiě)這個(gè)方法,該變量捕獲最終返回的true/false結(jié)果。在方法最末尾用一條return語(yǔ)句返回result變量的值:

如上述代碼所示,由于已經(jīng)給result變量賦予初值false,因此在else子句中明確地給它賦值false是不必要的,可以像下面這樣簡(jiǎn)化isHornorsStudent方法:

但是有一種情況下多個(gè)return語(yǔ)句是可以接受的:方法需要執(zhí)行一系列操作,在這個(gè)過(guò)程中,任何一步失敗意味著整個(gè)方法失敗。下面的偽代碼闡明了這種情況:

????????? 注意,Java編譯器會(huì)校驗(yàn)是否方法的所有邏輯路徑都返回類(lèi)型正確的結(jié)果。例如,下面的方法會(huì)產(chǎn)生編譯錯(cuò)誤,因?yàn)橹挥性趇f測(cè)試成功時(shí)才能到達(dá)return語(yǔ)句,如果if測(cè)試失敗,則return語(yǔ)句被繞過(guò):

這種情況下將產(chǎn)生下面這個(gè)編譯錯(cuò)誤: