方法控制流程

方法控制流程

        1. 流程语句分为两种,一种称为简单语句,以 ; 结尾,或者是语句块,以{}包裹,不加 ; ,可以将语句块看作是简单语句的集合。

        2. 控制语句结构分为三种,分别是顺序结构,选择结构和循环结构。顺序结构就是代码从上到下依次执行,选择结构就是根据条件的判断选择相应流程语句,循环结构是根据循环体重复执行流程语句。

1

        顺序结构是最简单的控制语句,执行流程语句分先后顺序(这个先后顺序不是系统指定的,而是开发者书写的代码顺序),由此带来的问题是:1. 在代码块中,局部变量总会在被使用前先声明,否则异常,2. 只在顺序结构中出现的return后不可以再写代码,否则编译报错。

  • 选择结构

        选择结构有只有两种,分别是if-else语句块和switch语句块。

        1. if-else语句块  

        if-else语句块是以逻辑的true和false作为选择的条件,其中if后将加括号写明判断语句,然后if的语句块将执行true的结果,else后不跟判断语句,直接加false的执行语句块。一个if-else语句块的两块代码一定是不兼容的(你执行了我就不执行),并且if-else语句块必须包含所有可能的结果的执行(要么true,要么false)

1
2
3
4
5
if(true){
...
}else{
...
}

        if语句是单块语句,用来执行条件为true时的情况,后面不加else语句,如果判断为false,那么代码将跳过这个if语句块接着向下执行。

1
2
3
4
5
...
if(true){
...
}
...

        if-else if-else语句是多代码块语句,多来执行多个判断条件的语句。

1
2
3
4
5
6
7
if(condition1){//condition1condition2condition1
...
}elseif(condition2){//!condition1&condition2condition1
...
}else{//!condition1&!condition2
...
}

        2. switch语句

        switch语句的基本结构是:

1
2
3
4
5
6
7
8
9
10
11
12
switch(switch-experssion){
casevalue1:
...
break;
casevalue2:
...
break;
...
default:
...
break;
}

        switch-expressin部分必须是整形和字符型(不是字符串),每个case提供了选择语句块的入口,而没有提供出口,所以为了切断后续的执行,需要使用break退出当前的选择(break的作用只是退出这个switch结构体,同理的,使用return也是可行的)。如果没有break,switch就是一个彻头彻尾的顺序结构语句块了,它会一直向下执行,直到执行到语句块尾。

        default的存在是为了避免传入的switch-expression不在所有case语句中的情况,default充当了意外情况的选择语句入口(没有提供出口),当然,default语句是可以省略的,此时如果传入非case情况的值,整个switch语句将会被跳过。

  • 循环结构

        循环结构由四个部分组成,分别是:初始条件,循环语句,迭代体,检查条件。但是这个部分都不是必须的,就是说,即使缺少这四个部分的几个或所有,依然可以构成循环体,只不过这种循环体看起来会很奇怪。

        缺少检查条件的循环体,检查条件默认返回的是true。        

        迭代体和检查条件密切相关,迭代体的作用是使检查条件为true,从而跳出循环,缺少迭代体,很可能造成无限循环。

        没有初始条件的循环体,比如while循环体。

        没有循环语句的循环体,将是空循环体。

        循环结构主要有以下几种:1. for循环,2. 增强for循环,3. while循环,4. do-while循环。

        for循环 for循环是java中唯一可以在语句条件中定义变量的语法结构,for循环的括号内包含了初始条件,检查条件和迭代体。for的循环条件中,只有检查条件是必须的,迭代体可以写在循环体内,初始条件可以写在for语句块之前。

1
2
3
4
5
for(inti=0/**/;i<10/**/;i++/**/){
...//
}
//-->-->-->-->...
for(;;)//

        增强for循环 增强for循环的实质是iterator实现的便利机制,因此增强for循环只适用于对象数组或者以对象数组为底层实现的集合类的遍历。具体问题会在Java集合类框架中讨论。

1
for(Typename:Array/Set){}

        while循环 while循环执行的是”当...为true“的循环,没有初始条件,检查条件是while后括号里的部分,循环语句和迭代体写在一起。

1
2
3
4
while(check-expression){
...//
...//
}

        do-while循环 do-while循环本质上和while循环是一样的,不同之处是,循环语句至少会执行一次,然后在依据检查条件判断循环语句是否需要接着执行。

1
2
3
do{
...
}while(check-expression)
  • break continue

        break的作用有两点,在switch语句中用以跳出当前循环,在for和while语句中跳出循环。这里的循环指的是整个循环,break被写在那个循环语句中,就会跳出这个循环语句所在的村换体,而不是某个循环的顺序语句块。

        continue和break有些不同,continue会跳出当前的循环语句,并非当前的循环体,并且continue只能在循环体结构中使用。

        实际上,break; 和contine; 都是跳出当前的循环(循环体或循环语句)它们实质上是break thisLabel; 和continue thisLabel的缩写,如果为一个循环体指定名称,并在break和continue后加上此名称,break和continue的作用范围就不止是当前的循环体,还可以作用于包裹当前循环体的外部循环体,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
outer:
for(inti=0;i<4;i++){
for(intj=0;j<4;j++){
if(j==2){
breakouter;//continueouter;
}
System.out.print(j+"");
}
System.out.print('\n');//
}
break
01
continue
01010101
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章