流程控制语句
任何编程语言中程序结构通常分为三类:顺序结构,分支结构,循环结构。
顺序结构:java中通常是顺序结构,从上往下逐行执行代码,中间没有控制跳转。
分支结构:java中提供两大类常见的分支控制语句,if语句和swich语句
循环结构:通常由while语句,do-while语句,for语句
分支结构
if语句:if语句使用布尔表达式值作为分支条件进行分支控制,通常有三种形式
第一种形式:
if(logic expression){ stament... }
第二种形式:
if(logic expression){ stament... }else{ stament... }
第三种形式:
if(logic expression){ stament... }else if(logic expression2){ stament... } .... //可以有多个else if语句 else{ //最后只有一个else语句 stament... }
logic expression为逻辑判断的布尔表达式或布尔值,返回true或false,stament...代表代码块。fen当返回true时执行紧跟后面花括号的代码块,false则跳过花括号内的代码块。
如果if(logic expression),else if(logic expression),else后的代码块只有一条语句时,可以省略花括号,如下:
int a = 3; if(a > 4) System.out.println("a大于4"); else if(a==4) System.out.println("a等于于4"); else System.out.println("a小于4");
swich语句:switch语句有一个控制表达式紧跟多个case标签组成,和if语句不同的是,switch语句的控制表达式的数据类型
只能是byte,short,char,int四种整数类型,枚举类型和java.lang.String类型,不能是boolean类型
switch语句后面跟着任意有限的case标签,每个case标签紧跟一个代码块,case标签是挡墙代码块的标识,语法格式如下:
switch(expression){ case condition:{ stament... break; //break;可以省略,但会引发一些错误 } case condition:{ stament... break; } case condition:{ stament... break; } default: { stament... } }
switch语句执行先对expression求值,然后把结果匹配case标签的值,如果匹配成功执行相对应case标签后对应的代码块。
如果没有对应的匹配则执行default的代码块,注意的是default语句,break关键字不是必须的,省略break关键字,程序 会无条件执行后面case标签代码块
循环结构
循环语句可以在满足条件表达式的情况下,反复执行某一段代码,当反复执行这段代码的时候,
在适当的时候达到某个条件,把条件表达式返回false,跳出循环
循环语句通常有四个部分:
初始化语句(init-stament):一条或多条语句,用于初始化工作,在循环体开始之前执行
循环条件(test-expresion):这是一条boolean表达式,其返回结果决定是否执行循环体
循环体(body-stament): 通过表达式后反复执行的代码块,只有一条语句时,花括号可以省略
迭代语句(iteration-stament):这个部分在一次循环体结束后执行,通常用于控制循环条件的变量,
使循环在适当时结束
提醒:应用循环结构的时候,一定要保证循环条件有变为false的时候,否则此循环变为一个死循环,无法结束
while循环语句格式:
init-stament; while(test-expression){ body-stament... iteration-stament }
do-while循环语句格式
init-stament; do{ body-stament... iteration-stament; }while(test-expression);
do-while和while的区别在于do-while先执行循环体,再判断条件表达式,即使test-expression返回false也会
执行一次循环体。do-white语句后面加分号结束
for循环
for循环语句更加简洁,通常情况下,for循环可以代替while循环和do-while循环,它基本语法格式如下:
for(init-stament;test-expression;iteration-stament){ body-stament... }
循环体只有一条语句,花括号也可以省略 ,圆括号内分为三部分,每部分都不是必须的,只有两个分号是必须的
声明语句只有一条,但可以初始化多个相同类型的变量,用逗号隔开,例如int a=1,b=3,c=5
需要指出的是,for循环迭代语句没有跟循环体放在一起,因此结束循环体即使遇到continue语句结束本次循环,
循环迭代语句一样得到执行
控制循环语句
java中提供了两个关键字控制循环,break和continue
break:表示结束循环,不仅可以结束所在的循环,还可以使用标签结束其外层循环,标签格式是标签名加英文符号(:)
public static void main(String[] args)
{
int i=0;
outer:
for(i=1;i<5;i++){
for(int j=0;j<3;j++){
if(j==1){
break outer;//跳出标签所在的循环
}
}
}
System.out.println("外部循环执行了"+i+"次");
}
输出:
外部循环执行了1次
continue:忽略本次循环剩下语句,接着开始下一次循环,而break是终止循环
与break类似的是,continue也可以紧跟一个标签,表示直接跳过该标签标识循环的当次循环的剩下语句,重新开始
下一次循环。
最后一点就是,程序结构可以相互嵌套实现很多功能,由于篇幅,这里不再叙述。