學習Java之如何正確地跳出循環(huán)結構
一. break
1. 作用
break關鍵字可以用于for、while、do-while及switch語句中,用來跳出整個語句塊,結束當前循環(huán)的執(zhí)行。 另外我們要特別注意,break 語句總是跳出自己所在的那一層循環(huán) 。 當兩個for循環(huán)嵌套時,如果break語句位于內(nèi)層的for循環(huán),它只會跳出內(nèi)層的for循環(huán),但不會跳出外層的for循環(huán)。
2. 語法
break的用法很簡單,我們在之前學習switch時就已經(jīng)使用過了。一般就是在循環(huán)或switch語句中編寫如下一條語句:
break;
比如我們使用for循環(huán)計算從1累加到100的和時,在循環(huán)內(nèi)部,我們可以使用if判斷,當i==50就提前利用break關鍵字結束循環(huán)。因此,break經(jīng)常會配合if語句使用。
3. 案例
3.1 案例一
break會跳出當前for循環(huán)。當break執(zhí)行后,當前整個for循環(huán)都會結束執(zhí)行。
/**
* @author
*/
public class Demo01 {
public static void main(String[] args) {
//break關鍵字
//需求:從1累加到100,找到累加到哪個數(shù)時,就使得sum和大于888
// 定義變量保存總和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i;
if (sum > 888) {
System.out.println("累加到"+i+"時,sum和就大于888");
// 結束當前循環(huán)
break;
//這里的語句執(zhí)行不到,編譯階段就會報錯
//System.out.println("能執(zhí)行嗎??");
}
//這里的語句可以執(zhí)行,當break跳出循環(huán)后,就不會再繼續(xù)執(zhí)行
System.out.println("能執(zhí)行嗎??"+i);
}
}
}
大家要注意,我們不能直接在break后面跟著其他語句,否則在編譯階段就會出現(xiàn)”Unreachable code“,如下圖所示:

3.2 案例二
需求:將輸入的內(nèi)容進行輸出,如果輸入"886"就結束當前聊天。
/**
* @author
*/
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//break關鍵字
Scanner sc = new Scanner(System.in);
while(true){
String word = sc.next();
if(word.equals("886")){
//跳出當前循環(huán)
break;
}
//輸出內(nèi)容
System.out.println(word);
}
}
}
二. continue
1. 作用
continue適用于各種循環(huán)結構中,不能用于其他地方,用于跳過本次循環(huán),執(zhí)行下一次循環(huán) 。 break可以跳出當前循環(huán),即整個循環(huán)都不會執(zhí)行了。而與break不同,continue是提前結束本次循環(huán),但會繼續(xù)執(zhí)行下一次的循環(huán)。在多層嵌套的循環(huán)中,continue也可以通過標簽指明要跳過的是哪一層循環(huán),并且同樣是只結束自己所在的循環(huán)。
2.語法
continue的用法很簡單,在循環(huán)結構中直接使用如下語句即可:
continue;
3. 案例
3.1 案例一
需求:輸出100以內(nèi),所有不是3的倍數(shù)的整數(shù)。使用continue結束當前循環(huán),繼續(xù)下一次循環(huán)。
/**
* @author
*/
public class Demo03 {
public static void main(String[] args) {
//continue關鍵字
//案例:輸出100以內(nèi),所有不是3的倍數(shù)的整數(shù)
for(int i = 1; i <= 100 ; i++){
if(i % 3 == 0){
//結束本次循環(huán),繼續(xù)執(zhí)行下次循環(huán),并不會結束整個循環(huán),直到完成整個循環(huán)
continue;
}
System.out.println(i);
}
}
}
3.2 案例二
需求:將輸入的內(nèi)容進行輸出,如果輸入"886"就結束當前聊天。如果輸入了敏感詞匯,則用“***”替代顯示。
/**
* @author
*/
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
//continue關鍵字
//需求:將輸入的內(nèi)容進行輸出,如輸入"886"就結束當前聊天。如輸入了敏感詞匯,則用“***”替代顯示
Scanner sc = new Scanner(System.in);
while(true){
String word = sc.next();
if(word.equals("886")){
//跳出整個循環(huán)
break;
}
if(word.equals("WC")||word.equals("SB")){
System.out.println("***");
//中止本次循環(huán),繼續(xù)下一次循環(huán)
continue;
}
System.out.println(word);
}
}
}
4. 多層循環(huán)嵌套時的跳轉
當多層循環(huán)嵌套時,內(nèi)層循環(huán)可以使用外層循環(huán)中的變量。外層循環(huán)每循環(huán)一次,內(nèi)層循環(huán)都會完整的執(zhí)行完內(nèi)層循環(huán)的所有次數(shù)。break/continue只會控制當前的循環(huán),當多層循環(huán)嵌套時,為了便于控制,我們可以通過給循環(huán)設定標簽的形式來進行控制。
4.1 語法
多層循環(huán)嵌套時,帶有標簽的語法結構如下:
label1: { ……
label2: { ……
label3: { ……
break label2;
}
}
}
當有多層循環(huán)嵌套,我們可以給每一次循環(huán)起個標簽名稱,名稱隨意,只要符合java里的標識符命名規(guī)則即可。然后結合break或者continue就可以結束當前或本次循環(huán)。
4.2 案例
這里是多層循環(huán)嵌套時帶有標簽的案例,供大家參考如下:
/**
* @author
*/
public class Demo07 {
public static void main(String[] args) {
//多層循環(huán)嵌套
//打印5行5列的矩形,用 * 表示
label01:for(int i = 1 ; i <= 5 ;i++){ //控制行
label02:for(int j = 1 ; j <= 5 ; j++){//控制列
System.out.print(" * ");
//當執(zhí)行到第3列時,提前跳出循環(huán)
if(j==3) {
break label02;
//continue label02;
}
}
//進行換行
System.out.println();
}
}
}
三. return
關于return關鍵字,今天先簡單介紹以后,后面我們在學習Java的”方法“時會詳細講解!
1. 作用
return并不是專門用來結束循環(huán)的關鍵字,它可以用來結束一個方法或循環(huán)。當一個方法執(zhí)行到return語句時,該方法就會被結束。與break和continue不同的是,return是直接結束整個方法,不管這個return處在多少層的循環(huán)之內(nèi)。
2. 語法
return關鍵字的基本語法如下:
訪問修飾符 返回值類型 方法名(參數(shù)...){
//方法體
//注意:這里返回值的類型必須與方法上聲明的返回值類型一致!
return 返回值;
}
3. 案例
因為return的用法,主要是和java里的”方法“有關系,所以在這里先簡單給大家展示兩個基本的案例,以后我們再詳細學習方法和return的內(nèi)容。
3.1 案例一
在方法中返回值指定類型的結果。
/**
* @author
*/
public class Demo05 {
public static void main(String[] args) {
// return關鍵字
//調用定義的方法,并獲取返回結果
String result = sayHello();
System.out.println("result="+result);
}
//定義一個帶有String類型返回值的方法
//訪問修飾符 返回值類型
public static String sayHello() {
//本方法中只能返回String類型
return "Hello,壹壹哥!";
}
}
3.2 案例二
return也可以在循環(huán)中使用,用于結束整個循環(huán)。
/**
* @author
*/
public class Demo06 {
public static void main(String[] args) {
// return關鍵字
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (i + j == 10) {
//結束整個循環(huán)的執(zhí)行,無論循環(huán)的層次
return;
}
System.out.println("i = " + i + ",j = " + j + ",i + j = " + (i + j));
}
}
//這里執(zhí)行不到
System.out.println("循環(huán)之后的語句");
}
}
四. 結語
至此,就把return、break、continue這三個關鍵字給大家講解完畢了,現(xiàn)在你知道它們?nèi)叩挠梅捌鋮^(qū)別了嗎?接下來就給大家對這幾個關鍵字進行一下總結。
1. break與continue的對比
1.1 特點不同
- break語句可以跳出當前循環(huán);
- break語句通常配合if來使用,在滿足條件時可以提前結束整個循環(huán);
- break語句總是跳出最近的一層循環(huán);
- continue語句可以提前結束本次循環(huán);
- continue語句也可以配合if語句,在滿足條件時提前結束本次循環(huán)。
1.2 使用場合不同
- break可用于switch結構和循環(huán)結構中;
- continue只能用于循環(huán)結構中。
1.3 作用不同
- break語句用于終止某個循環(huán),程序跳轉到循環(huán)塊外的下一條語句中;
- continue語句用于跳出本次循環(huán),進入到下一次循環(huán)。
2. continue、break、return三者的對比
- break:結束所在的循環(huán);
- continue:跳過本次循環(huán),繼續(xù)下一次循環(huán);
- return:結束整個方法。
以上就是給大家總結的今天的重點內(nèi)容,希望你要熟練記憶這些特性哦。
以上就是學習Java之如何正確地跳出循環(huán)結構的詳細內(nèi)容,更多關于Java 跳出循環(huán)結構的資料請關注腳本之家其它相關文章!
相關文章
JAVA開發(fā)中的一些規(guī)范講解(阿里巴巴Java開發(fā)規(guī)范手冊)
這篇文章主要介紹了JAVA開發(fā)中的一些規(guī)范講解(阿里巴巴Java開發(fā)規(guī)范手冊),需要的朋友可以參考下2018-04-04
springmvc參數(shù)為對象,數(shù)組的操作
這篇文章主要介紹了springmvc參數(shù)為對象,數(shù)組的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Data?JPA實現(xiàn)查詢結果返回map或自定義的實體類
這篇文章主要介紹了Spring?Data?JPA實現(xiàn)查詢結果返回map或自定義的實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Spring?Security實現(xiàn)基于RBAC的權限表達式動態(tài)訪問控制的操作方法
這篇文章主要介紹了Spring?Security實現(xiàn)基于RBAC的權限表達式動態(tài)訪問控制,資源權限表達式動態(tài)權限控制在Spring Security也是可以實現(xiàn)的,首先開啟方法級別的注解安全控制,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-04-04
Java中Optional.of()方法及源碼解析(非常詳細!)
這篇文章主要給大家介紹了關于Java中Optional.of()方法及源碼解析的相關資料,Java中java.util .Optional類的of()方法用于獲得該Optional類中具有指定類型的指定值的一個實例,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06

