目录
-
1 分支结构
-
1.1 分支结构的概念
- 当需要进行条件判断并做出选择时,使用分支结构。
- 当需要进行条件判断并做出选择时,使用分支结构。
-
-
1.2 if分支结构
-
if(条件表达式) {
语句块;
}
- 判断条件表达式是否成立
- => 若成立,则执行语句块;
- => 若不成立,则跳过语句块;
-
1.3 if else分支结构
- if(条件表达式) {
- 语句块1;
- } else {
- 语句块2;
- }
- 判断条件表达式是否成立
- => 若成立,则执行语句块1;
- => 若不成立,则执行语句块2;
- if(条件表达式) {
-
1.4 if else if else分支结构
-
if(条件表达式1) {
- 语句块1; }
- else if(条件表达式2) {
- 语句块2; }
- else {
- 语句块n;
- }
- 判断条件表达式1是否成立
- => 若成立,则执行语句块1;
- => 若不成立,则判断条件表达式2是否成立
- => 若成立,则执行语句块2;
- => 若不成立,则执行语句块n;
-
-
-
-
1.5 switch case分支结构
- switch(变量/表达式) {
- case 字面值1: 语句块1; break;
- case 字面值2: 语句块2; break;
- ...
- default:语句块n;
- }
-
- 计算变量/表达式的数值 => 判断是否匹配字面值1
- => 若匹配,则执行语句块1 => 执行break跳出当前结构
- => 若不匹配,则判断是否匹配字面值2
- => 若匹配,则执行语句块2 => 执行break跳出当前结构
- => 若不匹配,则执行语句块n
- switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。
- 局部变量:作用范围是从声明开始一直方法体结束
- 块变量:作用范围是从声明开始一直到当前语句块结束
- case 穿透,因为没有 break 跳出,会直接执行下面语句,直到遇到 break
-
- switch(变量/表达式) {
-
-
2. 循环结构
-
2.1 循环结构的概念
- 在Java程序中若希望重复执行一段代码时,就需要使用循环结构。
- 任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现。
-
2.2 for循环
- for(初始化表达式; 条件表达式; 修改初始值表达式) {
- 循环体;
- }
- 执行初始化表达式 => 判断条件表达式是否成立
- => 成立则执行循环体 => 修改初始值表达式 => 判断条件是否成立
- => 若不成立,则循环结束
- for(初始化表达式; 条件表达式; 修改初始值表达式) {
-
2.3 continue关键字
- continue语句用在循环体中,用于结束本次循环而开始下一次循环。
-
2.4 break关键字
- break用于退出当前语句块,break用在循环体中用于退出循环。
- for(;;) - 这种没有循环条件的循环叫做 无限循环,俗称“死循环”。
-
2.5 双重for循环的格式
- for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
- for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
- 循环体;
- }
- for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
- }
- 双重for循环的执行流程
- 执行表达式1 => 判断表达式2是否成立
- => 若成立,则执行表达式4 => 判断表达式5是否成立
- => 若成立,则执行循环体 => 执行表达式6 => 表达式5是否成立
- => 若不成立,则内层循环结束 => 表达式3 => 表达式2是否成立
- => 若不成立,则外层循环结束
- => 若成立,则执行表达式4 => 判断表达式5是否成立
- 执行表达式1 => 判断表达式2是否成立
- 双重for循环的特点
- 外层循环用于控制打印的行数,内层循环用于控制打印的列数,外层循环改一下,内层循环从头到尾跑一圈。
- 在以后的开发中若需要打印多行多列时,需要使用双重循环。
- 多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环。
- for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
-
2.6 break关键字跳出多层循环
-
在嵌套的循环结构中,break用于退出所在循环体。
-
for (...) {
- for(...) {
- break;
- }
- for(...) {
- }
-
-
如果要退出外层循环体,需要使用标号的方式。
- outer: for (...) {
- for(...) {
- break outer;
- }
- for(...) {
- }
- outer: for (...) {
-
-
2.7 while循环
- while(条件表达式) {
- 循环体;
- }
-
- 判断条件表达式是否成立
- => 若成立,则执行循环体 => 判断条件表达式是否成立
- => 若不成立,则循环结束
- while(条件表达式) {
-
2.8 while循环和for循环比较
- while循环和for循环完全可以互换,当然推荐使用for循环。
- while循环更适合于明确循环条件但不明确循环次数的场合中。
- for循环更适合于明确循环次数或范围的场合中。
- while(true) 等价于 for(;;) 都表示无限循环。
-
2.9 do while循环
- do {
- 循环体;
- } while(条件表达式);
- 执行循环体 => 判断条件表达式是否成立
- => 若成立,则执行循环体 => 判断条件表达式是否成立
- => 若不成立,则循环结束
- do-while循环主要用于至少执行一次循环体的场合中。
- 局部变量:作用范围是从声明开始一直方法体结束
- 块变量:作用范围是从声明开始一直到当前语句块结束
- case 穿透,因为没有 break 跳出,会直接执行下面语句,直到遇到 break
- do {
-