Java的流程控制
一、顺序结构
顺序结构就是代码由上往下按顺序执行,我们来看下面这一段代码
package Demo;
public class Test {
public static void main(String[] args) {
System.out.println("我是第一行,我执行了....");
System.out.println("我是第二行,我执行了....");
System.out.println("我是第三行,我执行了....");
}
}
二、分支结构
2.1 if分支结构
public class Test {
public static void main(String[] args) {
//格式一
if(表达式){
代码
}
//格式二
if(表达式){
代码1
}else {
代码2
}
//格式三
if(表达式1){
执行语句1
}else if(表达式2){
执行语句2
}
......
else{
执行语句n
}
}
}
格式一:表达式为true就执行语句,为false就不执行
格式二:表达式为true就执行语句1,false就执行语句2
格式三:从表达式1开始判断,表达式为true就执行里面的语句,否则就判断下一个表达式,如果没有一个表达式为true,就直接执行else里面的语句
2.2 switch分支结构
public class Test {
public static void main(String[] args) {
switch (表达式){
case 字面量1:
代码1;
break;
case 字面量2:
代码2;
break;
..........
default:
代码3;
break;
}
}
}
用法:
1、用括号内的表达式值匹配case后面的值,匹配上的就执行里面的代码,如果这个case后面没有写break就会往后执行,知道遇见break为止
2、default代表表达式的值没有case匹配,就会执行里面的代码
注意事项:
1、switch括号里面支持的类型有byte、short、int、String、char,不支持double、float、long类型。JDK5开始支持枚举类型,JDK7开始支持String类型
2、case后面不能是变量,也不能重复,记得写break,不然会出现穿透现象
三、循环结构
3.1 for循环
public class Test {
public static void main(String[] args) {
for (初始化变量; 表达式; 变量迭代) {
代码
}
}
}
执行顺序:
1、初始化变量只执行一次
2、判断表达式是否成立,如果成立就执行代码,否则结束循环
3、执行变量的迭代
4、一直循环步骤2和步骤3,直到表达式不成立时退出循环
拓展(快速生成for循环):
1、数字.fori
2、数组.fori
3、集合.fori
4、fori
3.2 while循环
public class Test {
public static void main(String[] args) {
while (表达式){
代码
变量迭代
}
}
执行顺序:
1、判断表达式是都为true,为true就执行里面的代码,为false就退出循环
3.3 do while循环
public class Test {
public static void main(String[] args) {
do{
代码
}while (表达式);
}
}
执行顺序:
1、首先执行一次,再判断while表达式里面的值,如果为true就继续执行代码,否则就退出循环
3.4 死循环
什么是死循环?
死循环就是让花括号里面的代码体一直执行下去,一般我们会写一个程序的递归出口判断,然后用break结束此循环,不要忘记写递归出口,不然你的电脑可能就会运行过载
有多少种死循环的格式?
1、for( ; ; ){ 代码 }
2、while(true){ 代码 }
3、do { 代码 }while (true);
4、补充:当你的死循环里面没有写递归出口时,此循环后面的语句都会报错
四、跳转语句
4.1 break
作用:结束本次循环(就近原则)
public class Test {
public static void main(String[] args) {
//循环1-5,输出1、2、3这几个数
for (int i = 1; i <= 5; i++) {
if(i == 4){
break;
}
System.out.println(i);
}
}
}
拓展:(补充嵌套循环,外层每循环一次,内层都会循环一个周期)
在循环体关键词前面定义一个名字加冒号标记,然后在代码里用break +名字 即可立即结束这个指定的循环,无论中间嵌套着多少个循环结构,请看如下案例:
public class Test {
public static void main(String[] args) {
//一天有五次登录账号的机会,小明尝试了三天,终于在第四次登录成功了
//dayNumber记录天数
int dayNumber = 1;
flag:while (true){
System.out.println("现在是第"+dayNumber+"天:");
for (int i = 1; i < 6; i++) {
System.out.println("小明在第"+dayNumber+"天尝试的第"+i+"次登录");
if(i == 4 && dayNumber == 3){
System.out.println("小明终于登录成功了~~~");
break flag;
}
}
dayNumber++;
System.out.println("-----------------------------------------------");
}
}
}
4.2 continue
作用:结束本次迭代,开启下一次迭代。请看一下案例:
public class Test {
public static void main(String[] args) {
//循环1-10的数字,但遇到偶数时跳过
for (int i = 1; i <= 10; i++) {
if(i % 2 == 0){
continue;
}
System.out.println(i);
}
}
}
五、总结
通过本文,我们学到了Java的控制流程,Java一共有三种控制流程结构,分别是顺序结构、分支结构、循环结构,其中有几点我们需要特别注意,第一,switch中的case代码体里面如果不写break的话就会出现穿透的现象,只要代码没有碰见break,那么代码就会执行到switch的结尾;第二,三种死循环的结构一定要写递归出口,也就是根据条件来写break语句,不然你去工作大概率活不到下班;第三,单独的break跳转语句是结束距离break最近的一个循环,如果有结束多层循环的需求还是要用给循环取别名来结束指定的循环。好了,虽然自己有点懒,但是能及时的把所学的知识记录并分享给大家,还是很有成就感的,还是那句话,虚心接受,如果觉得对你有帮助,不妨点个赞呗!