continue,break,return和finally的用法和例項說明
阿新 • • 發佈:2019-02-16
continue,break和return大家再熟悉不過了,今天主要對這三個關鍵字的使用細節和三者之間的區別進行一個簡單的總結。
continue和break最常用也是最基礎的,所以在這裡就不去列舉程式碼例項進行說明了。
continue的作用:如果你在迴圈語句內使用continue,當執行到continue時,本次迴圈結束進行下一次的迴圈,而continue後的的程式碼將不會被執行。
break的作用:主要有兩種用法一是結束迴圈體,二是在switch中結束case。不過這裡要特殊說明的是帶標籤的break,雖然不是很常用,不過大家可以瞭解一下。
func1 begin
i=0
i=1
end
func1 begin
i=0
i=1
finally
public class Test { public static void main(String[] args){ { back:for(int i = 0;i < 5;i++){ if (i == 2) {System.out.println("break"); break back; } } System.out.println("end");} } }
執行結果:break
end
再來看下面這段程式碼
public class Test
{
public static void main(String[] args){
back:{
for(int i = 0;i < 5;i++){
if (i == 2)
{System.out.println("break");
break back;
}
}
System.out.println("end");}
}
}
執行結果:break
接下來重點說說return,return可以返回值也可以返回空值,一直對return空值有所疑問,於是做了一個實驗。
執行結果:beginpublic class Test { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("begin"); func1(); System.out.println("end"); } public static void func1(){ System.out.println("func1 begin"); for(int i=0;i<5;i++){ if(i==2){ return; } System.out.println("i="+i); } System.out.println("func1 end"); } }
func1 begin
i=0
i=1
end
當執行到return;的時候返回到了函式被呼叫的地方。
還有一個疑問就是return和finally塊中的程式碼誰先執行,來看下面的程式碼
執行結果:beginpublic class Test { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("begin"); int j=func1(); System.out.println("j="+j); System.out.println("end"); } public static int func1(){ System.out.println("func1 begin"); try{ for(int i=0;i<5;i++){ if(i==2){ return i; } System.out.println("i="+i); } }catch (Exception e) { // TODO: handle exception System.out.println("catch"); }finally{ System.out.println("finally"); } System.out.println("func1 end"); return -1; }
func1 begin
i=0
i=1
finally
j=2
end
通過以上結果來看finally中的語句先於return來執行的。
最後給大家看一個很有意思的情況
public int func(){
while (isTrue()) return 4;
}
boolean isTrue(){
return true;
}
以上程式碼會報錯。
public int func(){
while (isTrue())
return 4;
return 0;
}
boolean isTrue(){
return true;
}
這樣就不會報錯。
原因是編譯器並不知道isTrue()返回的值是什麼,所以它不知道當isTrue()為假時該怎麼處理。
轉帖請註明出處 http://blog.csdn.net/MichaelFeng726 謝謝!