控制结构

顺序控制

其实就是从上到下的顺序执行,没啥好讲的。

分支控制

分支语句有那么几类:单分支 / 双分支 / 多分支
分支控制的语句也有那么几类:if-else / switch
当然,if-else是可以叠加的。

单分支结构

形如如下的结构:

if(条件表达式) {
执行代码块(单/多语句);
}
例如:

if (a>1) {
System.out.println("Hello world!");
}

说明:
1.条件为true执行代码块,false不执行。
2.单条执行代码时可以不用写{}(格式问题,最好写上吧)

and one

双分支结构

与单分支相比,多了一个 else
形如:

if (条件语句){
执行代码块1;
} else {
执行代码块2;
}
例如:

if (a>0) {
System.out.println("Hello world!");
} else {
System.out.println("Hello China!");
}

说明:和单分支结构略有不同
1.条件表达式为 true: 执行代码块1
2.条件表达式为 false: 执行代码块2

and two

多分支/嵌套分支(建议不要超过3层)

多分支,结构和双分支差不多,也就叠加了几个if-else而已
形如:

if (条件语句1){
执行代码块1;
} else if (条件语句2){
执行代码块2;
} else {
执行代码块3;
}

例如:

if (a<1) {
System.out.println("Hello world!");
} else if (a>1) {
System.out.println("Hello Guangdong!");
} else {
System.out.println("Hello China!");
}

说明:
1.分别进行条件判断,哪个成立执行哪个
2.有执行则表示有执行入口,没执行表示没执行入口
3.如果全不成立执行且末尾有 else,执行else

上面都是关于if语句的分支语句,下面来看个和if有些相似的判断:switch语句

and three

switch判断语句

结构如下:

switch(表达式) {
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
break;
default:
defaulet语句块;
break;
}

说明
1. 常量是确定的,不是范围
2.case成立后,语句块。
3.如果没有break分层,会导致从当下的语句块开始执行到有break的语句块去。(穿透)
4.break:退出当前case+switch
5.前面的case无法匹配时使用default语句
6.default语句可用可不用
7.表达式的返回值必须是
8.表达式的返回值必须是:byte,short,int,char,enum【枚举】,String

switch two

switch穿透思想

基于switch没有break就会不断向下执行,直到遇到break时退出的这点,switch分支还真的能判断一定的具体值。
下面举个例子看看就知道了:

import java.util.Scanner;
public class name {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入1~12进行月份所属季节判断:");
int month = myScanner.nextInt();
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("月份输错啦!");
}

}
}

switch one

if和switch的比较

1. 数值不多,符合byte,short,int,char,enum【枚举】,String的类型,推荐 switch。
2. 其他情况:区间判断、类型判断等 => 推荐if

循环控制★★★

循环控制有很多,有:for / while / while / do…while / 多重循环

for循环

格式如下:

for(循环变量初始化;循环条件;循环变量迭代){
循环操作语句;
}

说明:
1.执行顺序:先执行变量初始化,后以“循环条件=>循环操作语句=>循环变量迭代=>循环条件……”进行多次循环,直到不满足 “循环条件” 或者遇到跳转控制时退出循环。
2.循环条件:返回布尔值 (true/false)
3.初始化语句:可以多句,类型相同,逗号分隔
4.死循环:for(;;){语句块} => “;” 不能省略

main

while循环与do…while

格式如下:

// 1.while
循环变量初始化;
while(循环条件) {
循环体;
循环变量迭代;
}
do..while初始化

// 2.do...while
循环变量初始化;
do{
循环体;
循环迭代变量;
}while(循环条件);

注意:
while:
1.循环条件返回布尔值
2.先判断再执行
do…while:
先执行,在判断,少一次

while one
while two

跳转控制

break/continue/return

这部分简单描述下:
break:退出当前循环
continue:跳过当前循环
return:结束当前方法

提一嘴:指定label退出循环

在多层循环嵌套的情况下,给每一层指定label,并且在break/continue时将其用上,就能退出指定的循环。结构看下面:

label1: 
for(xxx){
....
label2:
for(xxxx){
....
label3:
for(xxx){
....
// 表示就当循环达到条件时,退出label2循环
break label2;
....
}
}
}

注意:
1.默认退出最近的循环
2.实际开发千万不要用label(标签会降低可读性,不到迫不得已千万不要用)