流程控制语句
今天我们来学习一下Java的流程控制语句,在学习之前,我们来了解一下什么叫做流程控制。流程控制简单的来说,就是在执行一件事情的过程中,让其在特定的条件下让其产生我们所期待的结果,也就是我们对其进行控制;
为什么要学习流程控制语句:流程控制语句可以让我们的代码更加的简洁,逻辑性更强
ps:如果有不正确之处,望各位看官不吝赐教,毕竟我还是菜鸟
多分支语句
If多分支
if多分支语句,属于条件控制语句,有三种格式:
-
格式一:单if
if(关系表达式){ 语句体; }
-
格式二:if… else…
if(关系表达式){ 语句体1; }else{ 语句体2; }
-
格式三:多个if…else…
if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; } ... else{ 语句体n+1; }
-
注意:无论if条件有多少个判断,语句体最终只有一个会执行。意思就是即使有多个条件匹配成功,也只会执行第一个匹配成功的条件;
switch多分支
switch也是一种多分支语句结构,但是它通常用来进行匹配数据,但是次数不易过多;
匹配的数据类型可以是byte,short,int,char,字符串,枚举。
-
格式:
switch(表达式){ case 值1: 语句体; break; // break的作用是直接退出switch的case匹配到default中去,如果没有 // break,那么就会一直执行下去,直到遇到break退出或switch执行结束 case 值2: 语句体; break; case 值3: 语句体; break; default: 语句体; break; }
-
注意:
- 同一个switch语句中,case语句后面的数值是不能重复的,也就是意味着一个数据只能被匹配一次;
- case穿透:在switch中,当有一个case条件被匹配成功,那么就不会在进行匹配后面的case条件,如果没有写break语句跳出,就会一直执行下去,直到遇到break语句;
- 如果default写在前面,那么先执行default;
-
与if的区别:
- if不仅可以进行单个判断还可以进行范围判断,而switch只能进行单个的数值匹配
循环结构
循环结构是为了解决重复代码的问题
for循环
-
格式:
for(初始化语句;条件判断语句;条件控制语句){ 循环体; // 我们执行的代码 }
-
执行流程:
- 先执行初始化语句,只会被执行一次;
- 执行条件判断语句,如果条件成立,执行循环体,如果条件不成立,结束整个循环;
- 条件成立,执行循环体,再执行条件控制语句,进行循环,直到循环结束;
while循环
-
格式:
初始化语句; while(条件判断语句) { 循环体语句; 条件控制语句; }
-
执行流程:
- 执行初始化语句;
- 执行条件判断语句,看其结果是true还是false,如果是false,循环结束,如果是true,继续执行;
- 执行循环体语句;
- 执行条件控制语句;
- 回到2继续,直到while循环结束;
do…while
-
格式:
初始化语句; do { 循环体语句; 条件控制语句; }while(条件判断语句);
-
执行流程:
- 执行初始化语句;
- 执行循环体语句;
- 执行条件控制语句;
- 执行条件判断语句,看其结果是true还是false,如果是false,循环结束,如果是true,继续执行;
- 回到2继续,直到循环结束;
循环的一些小练习
/**
* 水仙花数:不知道什么是水仙花数的可以百度一下
*/
public static void main(String[] args) {
// 遍历全部的三位数
for(int i = 100; i < 1000; i++) {
// 分别取出个位数,十位数和百位数
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
// 判断是否是水仙花数
if(ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.println(i);
}
}
}
---------------------------------------------------------------------------------
/**
* 打印9*9乘法表
*/
public static void main(String[] args) {
// 外层循环控制行数
for(int i = 1; i <= 9; i++) {
// 内层循环控制列数
for(int j = 1; j <= 9; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t"); // \t是制表符
}
System.out.println();
}
}
---------------------------------------------------------------------------------
/**
* 有一个容量为10L的空水桶。水桶的上面开始往里灌水,同时下面开始往出流水。
* 第一分钟灌水的速度是1L/min,第二分钟灌水的速度是2L/min,第三分钟灌水的速度是3L/min,
* 以此类推。而流水的速度固定是3L/min。那么几分钟之后,水桶里能保持灌满水的状态?
*/
public static void main(String[] args) {
int minute = 1; // 灌水的时间
int count = 0; // 水桶的初始容量
while( count <= 10) {
if( minute - 3 > 0) {
count += minute - 3;
}
minute ++;
}
System.out.println(minute);
}
continue、break
continue
- 作用:用在循环体中,表示退出这一次的循环,进行下一次循环,但是没有结束循环
break
- 作用:用在循环体和switch中,表示结束循环或结束case语句;