程序流程控制语句主要分为:顺序流程、判断流程、选择流程、重复流程(循环流程)几大类。
一、顺序流程
顺序流程是最简单也是最容易看的一种流程,它是根据代码书写的顺序来从上而下,逐行执行的。
package order;
public class OrderProcess {
public static void main(String[] args) {
//定义一个变量,并赋给初始值
int n=10;
//输出n
System.out.println("输出为:"+n);
}
}
上面就是一段简单的顺序流程代码。
二、判断流程
判断流程主要与if关键字有关,分为单支判断、双支判断、多支判断、嵌套判断这几类。
1、单支判断
格式:if(条件表达式){
执行的代码块;
}
示例:判断一个数是否大于0.
package process;
public class JudgeProcess {
//目的:控制整数在大于0时输出
public static void main(String[] args) {
//定义一个int型变量,并赋初值
int n=10;
if(n>0){//判断整数是否大于0
System.out.println("输出为:"+n);
}
}
}
2、双支判断
格式:if(条件表达式){
执行的代码块;
}else{
执行的代码块;
}
示例:判断奇偶数。
package process;
public class JudgeProcess {
//目的:判断一个数是否为奇偶数
public static void main(String[] args) {
//定义一个int型变量,并赋初值
int n=10;
if(n%2==1){//判断整数是否为奇数,是则执行if下语句,否则执行else下语句
System.out.println(n+"是奇数。");
}else{
System.out.println(n+"是偶数。");
}
}
}
输出为:10是偶数。
3、多支判断
格式:if(条件判断表达式){
执行的代码块1;
}else if(条件判断表达式){
执行的代码块2;
}
……
else{
执行的代码块n;
}
示例:判断一个字符是大写字母、小写字母、数字还是特殊字符。
package process;
public class JudgeProcess{
//目的:判断一个字符是大写字母、小写字母、数字还是特殊字符。
public static void main(String[] args) {
//定义一个字符并赋值
char ch='h';
if(ch>='A'&&ch<='Z'){//判断是否为大写字母
System.out.println("大写字母");
}else if(ch>='a'&&ch<='z'){//判断是否为小写字母
System.out.println("小写字母");
}else if(ch>='0'&&ch<='9'){//判断是否为数字
System.out.println("数字");
}else{
System.out.println("特殊字符");
}
}
}
输出为:小写字母
二、选择流程
格式:switch(条件){
case 匹配值一:执行语句一;
case 匹配值一:执行语句二;
case 匹配值一:执行语句三;
case 匹配值一:执行语句四;
case 匹配值一:执行语句五;
……
default:执行语句n;
}
程序执行时,会用每一个case匹配条件,如果匹配上了,就会执行后面的语句,直到语句结束。
语句结束有两种情况:一种是遇到break关键字;另一种是执行到语句结尾(右大括号)。
注:(1)case和default语句顺序不固定,如果想要语句在default后面就结束,在后面加break关键字;如果default在语句的最后面,break关键字可以省略。
(2)switch语句中的检测条件,支持的数据类型有:byte、short、int、char、enum(枚举)(jdk1.5之后)、String(字符串,jdk1.7之后支持)。
示例:给定一个月份,判断是什么季节。
//给定一个月份,判断是什么季节。
class Jijie
{
public static void main(String[] args)
{
//定义一个整数,并初始化值
int n=7;
mouth(n);//调用函数输出给定月份对应的季节
}
public static void mouth(int n){
switch(n){
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;
case 12:
case 1:
case 2:
System.out.println("冬季");break;
default:
System.out.println("给定的月份有误!");
}
}
}
输出为:夏季
判断语句和选择语句的区别:(1)判断语句检测的条件都是布尔型的,switch检测的不是;
(2)判断语句适合用作区域的判断,switch适合用值的匹配;
(3)判断语句每个if都跟一个条件表达式,都要获取一次值,switch只需获取一次值。
三、重复流程(循环流程)
所谓的循环,就是用来让一行代码或多行代码重复的执行。java中的循环语句分为三种:分别是while循环、do...while循环、for循环。
1、while循环
格式:while(条件表达式){ //条件表达式的结果是boolean类型
重复执行的代码;
}
特点:先判断条件表达式是否成立,条件成立(true),则执行while的循环体代码;条件不成立,则不执行循环体中的代码。
循环正常执行的三要素:循环的初始值;循环的上限;循环条件的修改。
示例:输出1-50之间所有的偶数。
class Demo
{
//目的:输出1~50之间所有的偶数。
public static void main(String[] args)
{
//定义一个变量,值为1
int n=1;
while(n<=50){//开始循环,循环的上限为小于等于50
//在循环中判断是否为偶数
if(n%2==0)
System.out.print(n+"\t");
//修改循环条件的值
n++;
}
}
}
结果为:
2、do...while循环
格式:do{
//重复执行的代码
}while(条件表达式);
特点:先执行循环体中的代码,再判断循环条件是否成立。条件满足,继续执行循环体中的代码;条件不满足,不会再执行循环体中的代码(先执行,后判断;循环体中的代码最少会执行一次)。
示例:输出1-50之间的所有奇数。class Demo
{
//目的:输出1~50之间所有的奇数。
public static void main(String[] args)
{
//定义一个变量,值为1
int n=1;
do{//开始循环,
//在循环中判断是否为奇数
if(n%2==1)
System.out.print(n+"\t");
//修改循环条件的值
n++;
}while(n<=50);//判断循环条件,循环的上限为小于等于50
}
}
结果为:
while循环和do..while循环的区别:
(1)while循环属于先判断后执行的循环语句;
(2)do..while循环属于先执行后判断的循环语句,循环体至少执行一次。
3、for循环
格式:for(循环初始值 ; 循环条件 ; 循环条件修改) {
重复执行的代码;
}
特点:for循环的特点:和while循环一样,属于先判断后执行的循环语句。
执行步骤:(1)先执行循环初始值
(2)判断循环条件是否成立:成立,执行循环中的代码块;不成立,停止循环。
(3)循环条件修改完成后,会再次判断循环条件是否成立。
注意:for循环语句中的循环三要素可以省略,但分号不能省略。
示例:输出1~50之间所有整数。
class Demo
{
//目的:输出1~50之间所有整数。
public static void main(String[] args)
{
//开始循环,判断循环条件,一次循环后,将i++,再判断循环条件
for(int i=0;i<=50;i++){
System.out.print(i+"\t");
}
}
}
结果为:
while循环和for循环:相同:都属于先判断后执行的循环语句。
不同:while循环在循环执行结束之后,循环的初始值还可以继续使用;for循环在循环执行结束之后,循环的初始值不能继续使用。
四、其他控制流程语句——break、continuebreak(跳出)语句:应用范围:选择结构和循环结构。
continue(继续)语句:应用于循环结构。
注: (1)这两个语句离开应用范围,存在是没有意义的。
(2)这个两个语句单独存在时,下面都不可以有语句,因为执行不到。
(3)continue语句是结束本次循环继续下次循环。
(4)标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。