眾所周知,return 只能用在有返回類(lèi)型的函數中,但是有返回值的函數一定要有return嗎?return都可以用在函數的哪些地方呢?這是本文需要討論的問(wèn)題。
--------------------------------------------------------------------------------
例一:
class test {
public String test() {
if(true){
return "";
}
else{
return "";
}
}
}
上面這樣即可通過(guò)編譯,但是下面這兩個(gè)例子卻不能通過(guò)編譯:
(一)
class test {
public String test() {
if(true){
return "";
}
}
}
(二)
class test {
public String test() {
if(isTrue()){
return "";
}
else if(!isTrue()){//兩個(gè)if里的判斷包括了所有的可能性,但是還是編譯期error
return "";
}
}
boolean isTrue(){
return true;
}
}
結論1:
對于(一),這是因為java編譯器認定單獨的if語(yǔ)句只在當一定條件滿(mǎn)足情況下才執行,它認為if不會(huì )有任何情況下都能執行的能力。
對于(二),這是因為java編譯器對if else 語(yǔ)句能夠全面囊括所有情況的能力只限定在的if...else(或if...else if...else)時(shí),而不包括if...else if。
--------------------------------------------------------------------------------
再看例二:
class test {
public String test() {
while(true){
return "";
}
}
}
上面這樣即可通過(guò)編譯,但是下面這樣不行:
class test {
public String test() {
while(isTrue()){
return "";
}
}
boolean isTrue(){
return true;
}
}
結論2:
這是因為編譯器認為while語(yǔ)句有在任何情況下都能執行的能力,但是只在入參為true的情況下有該能力。
--------------------------------------------------------------------------------
再看例三:
public class test {
String test() throws Exception{
throw new Exception();//拋出異常后,跳出程序,程序中止
}
}
結論3:
如果函數中創(chuàng )建了異常,并拋出,則該函數可以不返回值。
--------------------------------------------------------------------------------
知道了以上的情況,你就可以熟練自如得運用return了。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。