什么是流程控制?流程就是做一件事情的顺序,或者说是次序,在程序设计中,流程就是要完成一个功能,而流程控制则是值如何在程序设计中控制完成某种功能的次序。
语句是程序的控制成分,它具有特定的语法规则严格的表达方法,用来控制程序的运行,因此语句也是一些具有结构化的控制结构。这些控制结构可以归为三类:顺序结构,选择结构和循环结构,实现这些控制结构的语句可分为五类:表达式语句,复合语句,分支语句,循环语句和跳转语句。
if控制语句:
if语句是用来判断是给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一,Java提供了3种形式的if语句:if语句,if-else语句和if-else-if语句。
1,if语句:
一个if控制语句由关键字if,布尔表达式及位于其后的语句组成,基本形式:
if(布尔表达式)
{
方法体//程序语句
}
若布尔表达式的返回结果是true,则执行语句1,并继续处理其后的下一天语句(语句2),若为false,则跳过语句1并继续处理紧跟着整个if的语句2。
class Demo{
public static void main(String[] args) {
int a=5;
if(a>3)
{
System.out.println("变量大于3");
}
System.out.println("执行if语句后面的程序');
}
}
完全形式的if条件语句
在执行if条件语句时希望表达式的结果为false,这时就可以使用完全形式的if条件语句,完全形式的if条件语句语法格式为:
if(表达式){
方法体
}else{
方法体
}
class Demo{
public static void main(String[] args) {
int a=5;
int b=3;
if(a>b)
{
System.out.println("最大值是"+a);
}
elsse{
System.out.println("最大值是"+b);
}
System.out.println("执行if语句后面的程序');
}
}
其中else语句中包括的方法体就是代表当表达式为false是执行的代码。
多条件表达式的if条件语句:
if(表达式){
方法体
}else if(表达式){
方法体
}else{
方法体
}
class Demo{
public static void main(String[] args) {
int a=5;
int b = 3
if(a>b)
{
System.out.println("最大的是"+a);
}else if(a==b){
System.out.println("最大值是"+b);
}else{
System.out.println("相等吗');
}
System.out.println("执行if语句后面的程序');
}
}
结果为:最大值是5
执行if语句后面的程序
结果是:最大的是5;
执行if语句后面的程序
if条件语句还可以嵌套使用,嵌套的意思就是在if条件语句的语句块中在使用if条件语句,该语句快种包括if语句和else语句。
switch多分支语句:
switch多分分支语句也是条件语句中的一种,它相对if条件语句来说使用的并不多,switch语句语法格式:
switch(表达式)
{
case表达式1:
{
表达式的结果与表达式1相匹配时,所执行的方法体。
break;
}
case 表达式2:
{
表达式的结果与表达式1相匹配时,所执行的方法体。
break;
}
.......
default:
表达式的结果与上述表达式的结果都不匹配时,所执行的方法体。
}
执行switch语句时,首先执行表达式,求出表达式的值,然后价格该值同每个case关键字后面的值进行比较,如果相等,就执行该这后面的语句,然后执行break语句,结束switch控制语句,如果没有任何一个字与该表达式的值相等时,就执行default关键字后面的语句,switch只能携带一个default语句,位置不收限制,default无论出现在什么位置永远都是最后被匹配的项。
循环控制语句
循环语句的作用是是某一段程序根据需要重读执行很多次,循环语句是有循环体和循环条件两部分组成的,循环体主要是重复执行的语句,循环条件决定循环的开始。
for语句
for循环是一个功能强大且形式灵活的结构,不仅可以用于循环次数已经确定的情况,也可以用于循环次数不确定而只给出循环条件结束的情况,for的基本表现形式:
for([表达式1];[表达式2];[表达式3]){
//循环体(有若干语句组成)
}
其中表达式1是循环初值表达式,表达式2是是一个关系或逻辑表达式,返回true或false;表达式3是指每次循环时对表达式1中值的修改,在执行for语句时,先执行表达式1而且只执行一次,接着判断表达式2的值是否是true。如果是false则退出循环,反之则执行循环,然后执行表达式3,接着在判断表达式2,重读执行,知道表达式2返回false,结束循环。
for循环语句的三个表达式是不一定全部给出的,初始化表达式可以定义在for循环语句的外面,条件表达式不给出时表示永远为true,条件表达式3不给出时直接在执行条件表达式,这些情况都可以造成for循环语句无限制的循环,也叫做死循环,在开发中要避免死循环的出现。
class ForDemo{
public static void main(String[] args){
for(int x=1;x<5;x++){
System.out.println(x);
}
}
}
结果为:1,2,3,4,
for嵌套语句
和if语句一样for循环语句也是经常来嵌套使用的,也就是在for循环中再定义for循环,嵌套for循环语句经常用于输出特定图形的开发中因为嵌套fo循环最少执行两次循环,这样我们就可以让外层循环表示行,内层循环表示列来进行输出。
class ForDemo{
public static void main(String[] args){
for(int x=0;x<10;x++){
//外循环控制行
for(int y=0;y<10;y++){
//内循环控制列
System.out.println("*");
}
}
System.out.println();
}
}
while循环语句
while循环语句也是循环语句中的一种,主要用于不知道代码具体要执行多少次的循环中。while循环语句的语法格式和for循环语句是完全不同的,它的语法格式为:
while(条件表达式)
{
方法体
}
其中条件表达式的结果为true时,则会一直执行方法体中代码,直到条件表达式的结果的为false。
class WhileTest{
public static void main(String[] args){
int i =0;
while(i<5){
System.out.rintln("依次循环"+i};
i++;
}
}
}
使用while循环语句一定要小心while循环语句中的条件表达式如果开始就为false,则该循环将不执行,这里就相当于if条件语句的作用,如果条件表达式一直为true,又会造成死循环,这时通常要给出终止语句,来结束死循环。
do-while循环语句
do-while 循环语句是和while循环语句非常相似的,它们最大的不同是:do-while循环语句的循环体至少执行一次,do-while循环语句的语法格式:
do
{
方法体
}
while(条件表达式);
在执行do-while循环语句时,首先执行其中的方法体,然后执行条件表达式,如果条件表达式的结果为true,则再次执行方法体,依次循环,需要注意的是在do-while循环语句的最后一行有一个分号,这是其他语句没有的。
跳转语句
break:使用break语句可以在循环中直接退出循环,也就是说当执行到break语句时立即就不再执行循环体中后面的内容,而是直接结束当前循环。
class BreakTest{
public static void main(String[] args){
for(int x=0;x<10;x++) {
if(x==4)
break;
System.out.println(i+" ");
}
}
}
带标号的break
就是用来标记某一条语句的位置,这就是标号,使用标号的break语句格式为:
break 标号; 其作用是立即结束标号所标识的循环,值得注意的是,只有在嵌套循环时才需要使用标号语句,在嵌套循环语句中,可以在循环语句前面加上一个标号,在使用break语句时,用break后面紧接一个循环语句前面的标号,就可以退出循环了。
class BreakDemo
{
public static void main(String[] args)
{
flag;
for (int x=2;x<20;x+=5)
{
System.out.println("befor break: "+x);
for (y=0;y<10 ;y++)
{
System.out.println("The result of y is: "+y);
if(y==5)break flag;
//标号结束
}
System.out.println("after break: "+x);
}
}
}
continue跳转语句
continue语句只能用在循环中,它的功能是强制一个循环提前终止,即跳过该循环体中continue语句后面尚未执行的所以语句,但不结束整个循环,而是希望继续进行下一轮循环,和break一样他也有带符号的和不带符号的:
不带符号的continue格式:
continue;
class ContinueDemo
{
public static void main(String[] args)
{
for (int x=1;x<20;x++)
{
if(x==8)
continue;
System.out.println("x="+x);
}
}
}
带符号的continue
continue语句提供的另一中方法也就是continue后面也可以跟标号,它的语法是:continue 标号;
标号的使用规则与带符号的break语句是一样的,这个标号必须放在循环语句的前面,用来标记这个循环体。
如果标号所标记的是外层循环,在内层循环中执行continue语句,那么内层循环将被终止,立即跳转到外层的循环条件进行判断,以确定是否进行下一轮循环。
class ContinueTest
{
public static void main(String[] args)
{
flag;
for (int x=1;x<=9;x++;)//用flag标记外层循环
{
for (int y=1;y<=x;y++)
{
if (y>x)
{
System.out.println();
continue flag;//在内层循环执行带标号continue语句
}
System.out.println(""+x*y);
}
System.out.println();
}
}
}
return返回语句
return语句用来从当前的方法中退出,返回调用该方法的语句中,一般返回语句用在子程序或程序方法中,返回语句使用关键字“return”来表示,return语句的表现形式为:return [表达式];
return语句是在方法中使用的,方法名前面的类型决定了return语句的不同作用,当用void定义了一个方法时,方法体中不一定非要有return语句,因为程序执行完会自然返回的,例如:
public void Call()
{
System.out.println();
return
}
若要从程序中的某处强制返回到某处方法时,就必须使用return语句,而且方法的返回值类型不是void的才可以。
public class ReturnDemo
{
public static void main(String[] args)
{
int num = new Demo().getValue(8,9);
//在main方法中,当程序运行到此句话时,就返回了public int getValue(int x,int y)这个方法中。
}
public int getValue(int x,int y)
{
if(x>y)return x;
else return y;
}