Java编程基础——流程控制
摘要:本文主要介绍Java编程中的流程控制语句。
分类
流程控制指的是在程序运行的过程中控制程序运行走向的方式。主要分为以下三种:
顺序结构:从上到下依次执行每条语句操作。
分支结构:根据条件判断执行哪些语句操作。
循环结构:根据循环初始条件和终结要求,执行循环体内的操作。
分支结构
Java提供两种分支结构:if和switch。其中if语句使用布尔表达式或者是布尔值进行判断来进行分支的控制,而switch语句则是使用整数,String类型,枚举类型。
分支的各种情况要满足不重复,不遗漏的原则。即:相互独立,完全穷尽(MECE,Mutually Exclusive Collectively Exhaustive)。
if分支结构
if语句使用布尔表达式或者是布尔值进行判断来进行分支的控制,主要有三种结构。
if 语句
语法:
1 if ( 条件 ) { 2 语句; 3 }
执行:
如果条件成立,执行大括号中的语句,如果条件不成立,跳过大括号,执行后面的语句。
举例:
判断一个数字是否是正数。
1 int i = 1; 2 if (i > 0) { 3 System.out.println(i + "是正数!"); 4 }
if … else 语句
语法:
1 if ( 条件 ) { 2 语句; 3 } else { 4 语句; 5 }
执行:
如果条件成立,执行大括号中的语句,如果条件不成立,执行else后面大括号中的语句。
举例:
判断成绩是否及格。
1 int i = 58; 2 if (i >= 60) { 3 System.out.println("成绩及格了!"); 4 } else { 5 System.out.println("成绩不及格!"); 6 }
if … else if … else 语句
语法:
1 if ( 条件 ) { 2 语句; 3 } else if ( 条件 ) { 4 语句; 5 } else { 6 语句; 7 }
执行:
如果第一个条件成立,执行第一个条件后面大括号里的语句,如果第一个条件不成立,判断下一个条件,依次类推,如果所有条件都不成立,执行else中的语句。
举例:
判断成绩级别。
1 int i = 78; 2 if (i == 100) { 3 System.out.println("满分!"); 4 } else if (i >= 90) { 5 System.out.println("优秀!"); 6 } else if (i >= 80) { 7 System.out.println("良好!"); 8 } else if (i >= 60) { 9 System.out.println("及格!"); 10 } else { 11 System.out.println("不及格!"); 12 }
switch分支结构
语法:
1 switch ( 表达式 ) { 2 case 常量: 3 语句; 4 break; 5 case 常量: 6 语句; 7 break; 8 default: 9 语句; 10 break; 11 }
执行:
拿着变量或表达式得到的值,去和各个case后面常量的值做判断,看是否匹配,如果有一个匹配的,则执行当前常量后面的语句,遇见break则不再执行,如果没有遇见,则一直顺序往下执行。
如果没有匹配的,则执行default后面的语句。
举例:
判断性别。
1 int sex = 1; 2 switch (sex) { 3 case 1: 4 System.out.println("性别男!"); 5 break; 6 case 2: 7 System.out.println("性别女!"); 8 break; 9 default: 10 System.out.println("无性别!"); 11 break; 12 }
注意:
case后的常量值不可以重复。
default可以省略,而且default位置也可以提到前面,只是不建议。
break可以省略。
switch只能做等值判断。
if结构和switch结构的对比
相同点:
都可以实现分支结构。
不同点:
能用switch解决的题目肯定能用if解决;但能用if解决的题目不一定可以用switch解决。
只能处理等值的条件判断,且条件是整型变量或字符变量的等值判断。
switch结构的效率比if结构的效率高。
循环结构
循环语句也称作迭代语句,循环语句可以在满足条件的情况下反复执行某一段代码。
while循环结构
语法:
1 while ( 条件 ) { 2 语句; 3 }
执行:
先判断条件是否满足,如果不满足则跳出循环,如果满足则执行语句,然后再次判断,直到条件不满足或跳出循环。
举例:
循环打印从0到10的数字。
1 int i = 0; 2 while (i <= 10) { 3 System.out.println(i); 4 i++; 5 }
do-while循环结构
语法:
1 do { 2 语句; 3 } while ( 条件 );
执行:
先执行一次语句,然后判断条件是否满足,如果不满足则跳出循环,如果满足则执行循环语句,直到条件不满足或跳出循环。
举例:
循环打印从0到10的数字。
1 int i = 0; 2 do { 3 System.out.println(i); 4 i++; 5 } while (i <= 10);
for循环结构
语法:
1 for ( 初始化表达式 ; 条件 ; 变量更新 ) { 2 语句; 3 }
执行:
先执行一次初始化表达式,然后判断条件,如果不满足则跳出循环,如果满足则执行语句,然后执行变量更新。再判断条件是否满足,不满足则跳出,满足则执行语句和变量更新,直到条件不满足或跳出循环。
举例:
循环打印从0到10的数字。
1 for (int i = 0; i <= 10; i++) { 2 System.out.println(i); 3 }
注意事项:
◆ 两个分号必不可少。
◆ 三个表达式可以不写,但有可能造成死循环。
◆ 表达式1可以有多个变量初始化,要用逗号隔开。
◆ 表达式3可以有多个变量更新,要用逗号隔开。
三种循环结构对比
相同点:
都具备循环的四要素:循环变量初始化,循环条件,循环操作(循环体),循环变量更新(迭代)。
不同点:
语法不同。
执行顺序不同,while循环和for循环都是先判断后执行,do-while是先执行后判断。
执行效率不同,do-while的执行效率最高。
跳转结构
跳转语句用于实现循环执行过程中程序流程的跳转。
break语句
在switch条件语句和循环语句中都可以使用break语句。
当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。
举例:
循环打印从0到10的数字,要求当要打印6时停止循环。
1 for (int i = 0; i <= 10; i++) { 2 if (i == 6) { 3 break; 4 } 5 System.out.println(i); 6 }
结果:
1 0 2 1 3 2 4 3 5 4 6 5
当条件判断i为6时,循环终止,不再打印6和之后的数字。
continue语句
只能用在循环语句中,它的作用是跳过本次循环,执行下一次循环。
举例:
循环打印从0到10的数字,要求当要打印6时跳过循环,即不要打印6。
1 for (int i = 0; i <= 10; i++) { 2 if (i == 6) { 3 continue; 4 } 5 System.out.println(i); 6 }
结果:
1 0 2 1 3 2 4 3 5 4 6 5 7 7 8 8 9 9 10 10
当条件判断i为6时,循环跳过,不再打印6,继续打印之后的数字。
return语句
用于跳出方法。