控制执行流程

本文深入讲解Java中的流程控制语句,包括选择语句(if、switch)、迭代语句(while、do-while、for)、终止语句(return、break、continue)及臭名昭著的goto。探讨了这些语句如何帮助开发者在程序执行过程中作出决策,控制程序流向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就像有知觉的生物一样,流程必须在执行过程中控制它的世界,并做出选择。在Java中,你要使用执行控制语句来做出选择。

选择语句

  • if( Boolean-expression ){
    statement
    } else {
    statement
    }
    else 和它后面的{}可以没有
    布尔表达式必须产生一个布尔结果

  • switch(integral-selector){
    case:integral-value0: statement ; break;
    case:integral-value1: statement ; break;
    case:integral-value2: statement ; break;

    default:statement;break;
    }

  1. case和default没有顺序要求。
  2. 每一个case以及default后面的break都是可选的。若省略的break,代码会接着执行,直到遇到一个break为止。
  3. case后面的statement可以省略,甚至statement;和break;一起省略,这样可以实现多路选择。

迭代

  • while(Boolean-expression){
    statement
    }
  1. 会先执行一次Boolean-expression表达式,为true就进入循环体。在循环体执行结束后在执行Boolean-expression表达式,为true进入循环体。反复这个过程。
  • do{
    statement
    } while(Boolean-expression)
  1. 会先执行一次循环体,循环体之行结束后,执行Boolean-expression表达式,为true接着执行循环体。反复这个过程。
  • for(initialization1 ,initialization2 , initialization3 ; Boolean-expression;step){
    statement
    }
  1. 先执行initialization1 ,initialization2 , initialization3(nitialization1 ,initialization2 , initialization3一定是同一类型),且只执行一次。

  2. 接着执行Boolean-expression,为true执行循环体statement。

  3. 循环体statement执行结束后,执行step“步进”,然后在执行Boolean-expression,为true执行循环体。反复这个过程。

  4. initialization1 ,initialization2 , initialization3 中是逗号操作符,而不是逗号分隔符。在方法参数列表中叫逗号分隔符。Java中唯一用到逗号操作符的地方就是for语句中。

  • foreach(VariableClassType variable : array-expression or container-expression){
    statement
    }
  1. foreach会自动产生每一项,不用通过下标或索引获取。
  2. array-expression or container-expression可以是产生数组或容器的表达式。

return

  1. 产生返回值
  2. 退出方法

break 和 continue

  1. break用于强行退出循环,不在执行循环中的剩余语句。即与
    for(initialization1 ; Boolean-expression;step){
    statement
    }
    结合使用时,在statement中执行了brack,brack后面的语句不在被执行,step也不在被执行。

  2. continue则停止执行当前的迭代,然后退回循环的起始处。即与
    for(initialization1 ; Boolean-expression;step){
    statement
    }
    结合使用时,在statement中执行了contiune,contiune后面的语句不在被执行,但step会被执行。然后直接执行Boolean-expression。

臭名昭注的goto

goto是Java中的保留字,但并没有使用它。在Java中使用break和continue加label(标签)来实现和goto一样的功能。但不是跳转,而是中断迭代语句的一种方法。

标签是个跟有冒号的表示符
例 :label:

标签和break、continue、迭代语句一起使用

public class LabeleFor{
	public void labelTest(){
		int i = 0;
		outer: // 第一个标签
		for( : true : ){
			inner: // 第二个标签
			for(; i < 10;i++){
				Log.d("TAG" , "i = "+ i);
				if( i == 2 ){
					Log.d("TAG" , "contiune");
					contiune;
				}
				
                if( i == 3 ){
					Log.d("TAG" , "break");
					i++; // 由于执行了break直接中断最接近break得循环  ,
						 // i++得不到执行,所需要i++,不然程序执行不到3后面。
					break;
				}
				
				if( i == 7 ){
					Log.d("TAG" , "contiune outer");
					i++; // 当执行contiune outer时, 直接跳转到outer处,
						 // 所以for(1;2;3)中第3部分步进不能被执行所以需要i++。
						 // 不然执行不到7后面
					contiune outer;
				}

				if( i == 8 ){
					Log.d("TAG" , "break outer");
					i++; // 执行break outer 直接跳到outer处,
					     // 所以for(1;2;3)中第3部分步进不能被执行所以需要i++
					     // 和break一样。
					break outer;
				}

 			    for(int i = 0 ; i < 5 ; i++){
 			    	if( i  == 3 ){
 			    		Log.d("TAG" , "contiune inner");
 			    		continue inner;
 			    	}
 			    }
			}
	 	}
 	}
}
  1. Java中需要使用标签的唯一理由就是因为循环嵌套存在,而且想从多层嵌套中break或contiune。
  2. 当for(1;2;3)和continue 结合使用时,在循环体内执行了continue,但第3部分“步进”还是被执行。当for(1;2;3)和continue label结合使用时,第3部分“步进”不被执行需要注意。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值