java中的switch語句中break和continue的區別--------總算是弄明白了
阿新 • • 發佈:2019-01-08
1、先上一個例子:
package com.test;
import java.util.ArrayList;
import java.util.List;
public class SwitchTest {
public void ss(List<Integer> l){
for(int i=0;i<l.size();i++){
switch(l.get(i)){
case 0:
System.out.println("this is 0");
continue;
case 1:
System.out.println("this is 1");
case 2:
System.out.println("this is 2");
case 3:
System.out.println("this is 3");
break;
default:
System.out.println("default");
}
System.out.println("out switch");
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> l=new ArrayList<Integer>();
l.add(0);
l.add(1);
l.add(2);
l.add(3);
l.add(4);
SwitchTest st=new SwitchTest();
st.ss(l);
}
}
分析上面程式結論如下:
1、當 程式中 System.out.println("out switch"); 這句話沒有的話,也就是說switch 後面沒有其他執行業務邏輯的時候,break 和continue 效果是一樣的。都是跳出本次迴圈,執行下一次迴圈。
2、當switch 後面有其他執行業務邏輯的時候,break 和continue 效果就不一樣了。break是跳出switch後,繼續執行後面的邏輯。上述例子就會輸出 out switch 。單如果是continue就是跳出switch,不執行switch後面的業務邏輯。
3、當switch語句中沒有contiune和break的時候,程式匹配後,會繼續執行case後面的條件。例如上例中:
case 1:
System.out.println("this is 1");
case 2:
System.out.println("this is 2");
case 3:
System.out.println("this is 3");
break;
這部分。如果於1匹配之後,會繼續輸出 this is 2 和 this is 3 直到遇到 this is 3後面的break 才跳出switch.同樣如果匹配的是2,還是會執行case 3 後面的語句。直到遇到beak跳出switch。
當然如果beak、contiune 用在for 或者while迴圈的時候,contine就是跳出本次迴圈,繼續下一次迴圈。而break就是跳出相應的for或者while迴圈,不在執行。
package com.test;
import java.util.ArrayList;
import java.util.List;
public class SwitchTest {
public void ss(List<Integer> l){
for(int i=0;i<l.size();i++){
switch(l.get(i)){
case 0:
System.out.println("this is 0");
continue;
case 1:
System.out.println("this is 1");
case 2:
System.out.println("this is 2");
case 3:
System.out.println("this is 3");
break;
default:
System.out.println("default");
}
System.out.println("out switch");
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> l=new ArrayList<Integer>();
l.add(0);
l.add(1);
l.add(2);
l.add(3);
l.add(4);
SwitchTest st=new SwitchTest();
st.ss(l);
}
}
分析上面程式結論如下:
1、當 程式中 System.out.println("out switch"); 這句話沒有的話,也就是說switch 後面沒有其他執行業務邏輯的時候,break 和continue 效果是一樣的。都是跳出本次迴圈,執行下一次迴圈。
2、當switch 後面有其他執行業務邏輯的時候,break 和continue 效果就不一樣了。break是跳出switch後,繼續執行後面的邏輯。上述例子就會輸出 out switch 。單如果是continue就是跳出switch,不執行switch後面的業務邏輯。
3、當switch語句中沒有contiune和break的時候,程式匹配後,會繼續執行case後面的條件。例如上例中:
case 1:
System.out.println("this is 1");
case 2:
System.out.println("this is 2");
case 3:
System.out.println("this is 3");
break;
這部分。如果於1匹配之後,會繼續輸出 this is 2 和 this is 3 直到遇到 this is 3後面的break 才跳出switch.同樣如果匹配的是2,還是會執行case 3 後面的語句。直到遇到beak跳出switch。
當然如果beak、contiune 用在for 或者while迴圈的時候,contine就是跳出本次迴圈,繼續下一次迴圈。而break就是跳出相應的for或者while迴圈,不在執行。