3、Java基础语法(下):程序流程控制

程序流程控制

说明: untitle.png

顺序结构

说明: untitle.png

分支结构

分支语句1: if-else结构

说明: untitle.png

说明: untitle.png

if-else使用说明

1、条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

2、语句块只有一条执行语句时,一对{}可以省略,但建议保留

3、if-else语句结构,根据需要可以嵌套使用

4、当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

5、当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓

当多个条件是“包含”关系时,“小上大下 / 子上父下”

分支语句2: switch-case结构

说明: untitle.png

说明

1、根据switch中表达式中的值,依次匹配各个case的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句,当调用完执行语句完以后,则仍然继续向下执行其他case语句中的执行语句,直到遇到break关键字或者switch-case结构末尾结束为止。

2、break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。

3、switch-case结构中的表达式,只能是如下的六种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)。

4、case之后只能声明常量,不可以声明范围。

5、break关键字在switch结构中是可选的。

6、default类似与if-else中的else,default结构是可选的。

7、如果switch中的多个case的执行语句相同,那么可以考虑合并,例如:

switch(expression){
    // 合并value1、value2、value3
    case value1:
    case value2:
    case value3:
        //TODO: do something
        break;
    case value4:
        //TODO: do something
}

switch-case和if-else的选择:

1、凡是可以使用switch-case的结构,都可以使用if-else

2、当既可以使用switch(表达式取值情况不多时)又可以使用if时,优先选择switch。

循环结构

在某些条件满足的情况下,反复执行特定代码的功能

说明: untitle.png

for循环

说明: untitle.png

while循环

说明: untitle.png

初始化部分出了while循环以后仍可以调用

do-while循环

说明: untitle.png

说明:

1、运行的时候会先执行一次循环体部分和迭代部分。

无限循环格式

for循环

for ( ; ; ){ }

for循环的初始化部分和迭代部分,可以使用,来分割执行多个语句,要求i、j必须是同一类型

for(int i = 0,j = i + 10;i < 5;i++,j += 2){
    System.out.println("i = " + i + ",j = " + j);
}
//		i = 0,j = 10
//		i = 1,j = 12
//		i = 2,j = 14
//		i = 3,j = 16
//		i = 4,j = 18

while循环

while(true){ }

do-while循环

do{ }while(true);

结束循环的两种方式

1、循环条件部分返回false

2、在循环体中,执行break

嵌套循环(多重循环)

将一个循环放在另一个循环体内,就形成了嵌套循环。

设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

外层循环控制行数,内层循环控制列数

优化:计算程序运行时间

衡量功能代码的优劣

1、保证代码的功能正确性;

2、代码的可读性;

3、健壮性;

4、高效率与低存储(算法的好坏):时间复杂度、空间复杂度

//获取当前开始时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
....
//获取当前结束时间距离1970-01-01 00:00:00的毫秒数
long end= System.currentTimeMillis();
//时间差计算程序运行时间
System.out.println("所花费的时间:" + (end - start));

关键字break、continue

说明: untitle.png

说明: untitle.png

continue和break的后面不可以声明执行语句。

flag: for(int i = 0;i < 10;i++){
    for(int j = 0;j < 100;j++){
        if(j > 20){
            break flag;
            //continue flag;
        }
    }
}