while和do....while循环(也叫控制结构)
概念如下:
image.png
while示例如下:
image.pngdo.....while示例如下:
image.png
while和do...while区别:
do....while: 1 .先执行后判断 2. 判断次数和循环次数相等
image.png
while:
1.先判断后执行 2. 判断次数比循环次数加1
for循环(也叫控制结构)
语法:
for(初始化语句;循环条件;迭代语句){
循环体;
}
示例:
//输出1到10的数字
for (int i=1;i<=10;i++){
System.out.println(i);
}
极限代入得到-》循环次数和判断次数关系
i=11时
循环次数:0
判断次数:1
if条件语句(也叫选择结构或者分支结构)
第一个场景:if 单独使用
如果a大于b,输出a大,b小
int a=1;
int b=2;
if(a>b) {
System.out.println("a大,b小");
}
第二个场景:if和else结合使用
如果a大于b,输出a大,b小
否则输出a小,b大
int a = 1;
int b = 2;
if (a > b) {
System.out.println("a大,b小");
} else {
System.out.println("a小,b大");
}
第三个场景: 多个if (不过一般不这么写)
如果a大于b,输出a大,b小
如果a小于b, 输出a小,b大
int a = 1;
int b = 2;
if (a > b) {
System.out.println("a大,b小");
}
if (a < b) {
System.out.println("a小,b大");
}
第四个场景:if+ else if
如果a大于b,输出a大,b小
否则如果 a小于b, 输出a小,b大
int a = 1;
int b = 2;
if (a > b) {
System.out.println("a大,b小");
} else if (a < b) {
System.out.println("a小,b大");
}
第五个场景: if+else if +else 结合使用
int a = 1;
int b = 2;
if (a > b) {
System.out.println("a大,b小");
} else if (a < b) {
System.out.println("a小,b大");
} else if (a == b) {
System.out.println("a和b相等");
} else {
System.out.println("a和b比较失败");
}
switch: 切换
case:情况,小事情
default: 上面case 都不满足的情况下,默认执行default
语法:
switch (key) {
case value:
break;
default:
break;
}
代码示例:
int day = 1;
switch (day) {
case 1:
System.out.println("周一");
break;
case 2:
System.out.println("周二");
case 3:
System.out.println("周三");
case 4:
System.out.println("周四");
case 5:
System.out.println("周五");
case 6:
System.out.println("周六");
case 7:
System.out.println("周日");
default:
System.out.println("非法日期");
break;
}
上面代码执行结果:
周一
上面代码如果去掉case 1中的break,执行结果如下:
周一
周二
周三
周四
周五
周六
周日
非法日期
为什么去掉了break,执行完case 1,后续的代码也会被执行??答: case 语法决定的(case穿透),case 1 满足条件被执行后,如果没有break,就顺序往下执行,不会再去判断,直到遇到break跳出,后续case 就不会再被执行
case穿透应用场景:
需求: day为1-5是工作日,其余非工作过日
// day为1-5是工作日,其余非工作过日
int day = 1;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("是工作日");
break;
case 6:
case 7:
System.out.println("是非工作日");
break;
default:
System.out.println("非法日期");
break;
}
上面代码执行:(因为没有break,所以会顺序执行,直到遇到break)
是工作日
下面代码虽然也能实现需求,但是代码存在冗余,所以就要用到上面提到的case穿透
// day为1-5是工作日,其余非工作过日
int day = 1;
switch (day) {
case 1:
System.out.println("是工作日");
break;
case 2:
System.out.println("是工作日");
break;
case 3:
System.out.println("是工作日");
break;
case 4:
System.out.println("是工作日");
break;
case 5:
System.out.println("是工作日");
break;
case 6:
System.out.println("是非工作日");
break;
case 7:
System.out.println("是非工作日");
break;
default:
System.out.println("非法日期");
break;
}
选择结构总结:
-
if一定要有,且为1个(也可以是多个,不过一般不这样写)
-
有多少个else if : 有0个或者多个
3.有多少个 else: 只能是0个和或者1个(最多有1个,否则写多个else,程序会报错)
- 当同时有2个分支满足条件时,只选择一个分支去执行,后面的分支都不会再执行(类型下高速,当有2个匝道都可以时,只能选择一个匝道,另外一个不会再走)
int a = 1;
int b = 2;
if (a < b) {
System.out.println("1:a小,b大");
} else if (a < b) {
System.out.println("2:a小,b大");
}
5 . 程序语言中,控制结构分为三种:
1. 顺序控制结构(从上往下顺序执行)
2. 分支控制结构
3. 循环控制结构
网友评论