Java基础笔记(四)

121 阅读4分钟

流程控制语句

分支结构

当需要进行条件判断并做出选择时,使用分支结构

if分支结构

一个 if 语句包含一个布尔表达式和一条或多条语句。

判断条件表达式是否成立 

 => 若成立,则执行语句块;

 => 若不成立,则跳过语句块; 

if(条件表达式) { 
  语句块;
}

if...else语句

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

判断条件表达式是否成立

 => 若成立,则执行语句块1;

 => 若不成立,则执行语句块2; 

if(条件表达式) {
  语句块1;
} else {
  语句块2;
}

if else if else分支结构

判断条件表达式1是否成立

 => 若成立,则执行语句块1;

 => 若不成立,则判断条件表达式2是否成立

 => 若成立,则执行语句块2;

 => 若不成立,则执行语句块n; 

if(条件表达式1) {
  语句块1; 
}  else if(条件表达式2) {
  语句块2; 
}  else {
  语句块n; 
}

使用if-else if-else分支结构判断所在等级并打印

[90 ~ 100] 等级A

[80 ~ 89] 等级B

[70 ~ 79] 等级C

[60 ~ 69] 等级D 

[0 ~ 59] 等级E 

public class Main {
    public static void main(String[] args) {
        int n = 70;
        if (n >= 90) {
            System.out.println("等级A");
        } else if (n >= 80) {
            System.out.println("等级B");
        } else if (n >= 70) {
            System.out.println("等级C");
        } else if (n >= 60) {
            System.out.println("等级D");
        } else {
            System.out.println("等级E");
        }
    }
}

switch case分支结构

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5 开始支持枚举类型,从jdk1.7开始支持String类型。 

计算变量/表达式的数值 => 判断是否匹配字面值1

 => 若匹配,则执行语句块1

 => 执行break跳出当前结构

 => 若不匹配,则判断是否匹配字面值2

 => 若匹配,则执行语句块2

 => 执行break跳出当前结构

 => 若不匹配,则执行语句块n 

switch(变量/表达式) {
    case 字面值1: 语句块1; break;
    case 字面值2: 语句块2; break;
    ...
    default:语句块n;
}

循环结构

在Java程序中若希望重复执行一段代码时,就需要使用循环结构。

任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现。

Java中有三种主要的循环结构

  • while 循环
  • do…while 循环
  • for 循环

for循环

执行初始化表达式

 => 判断条件表达式是否成立

 => 成立则执行循环体

 => 修改初始值表达式

 => 判断条件是否成立

 => 若不成立,则循环结束 

for(初始化表达式; 条件表达式; 修改初始值表达式) {
  循环体;
}

continue关键字

continue语句用在循环体中,用于结束本次循环而开始下一次循环

break关键字

break用于退出当前语句块,break用在循环体中用于退出循环。

 for(;;) - 这种没有循环条件的循环叫做 无限循环,俗称“死循环”

双重for循环的格式

执行表达式1

 => 判断表达式2是否成立

 => 若成立,则执行表达式4

 => 判断表达式5是否成立

 => 若成立,则执行循环体

 => 执行表达式6

 => 表达式5是否成立

 => 若不成立,则内层循环结束

 => 表达式3

 => 表达式2是否成立

 => 若不成立,则外层循环结束 

for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
    for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
        循环体;
    }
}

双重for循环的特点

  • 外层循环用于控制打印的行数,内层循环用于控制打印的列数,外层循 环改一下,内层循环从头到尾跑一圈。
  • 在以后的开发中若需要打印多行多列时,需要使用双重循环。
  • 多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常 见的就是双重循环。 

break关键字跳出多层循环

在嵌套的循环结构中,break用于退出所在循环体。

如果要退出外层循环体,需要使用标号的方式。

outer: for (...) {
    for(...) {
        break outer;
    }
}

while循环

判断条件表达式是否成立

 => 若成立,则执行循环体

 => 判断条件表达式是否成立

 => 若不成立,则循环结束 

while(条件表达式) {
    循环体;
}

while循环和for循环比较

  • while循环和for循环完全可以互换,当然推荐使用for循环。
  • while循环更适合于明确循环条件但不明确循环次数的场合中。
  • for循环更适合于明确循环次数或范围的场合中。
  • while(true) 等价于 for(;;) 都表示无限循环。 

do while循环

do-while循环主要用于至少执行一次循环体的场合中。 

执行循环体

 => 判断条件表达式是否成立

 => 若成立,则执行循环体

 => 判断条件表达式是否成立

 => 若不成立,则循环结束 

do {
    循环体;
} while(条件表达式);