Java语言基础02-流程控制

来源:互联网 发布:js 导航栏点击后变色 编辑:程序博客网 时间:2024/05/29 02:22

一 流程控制结构(如果没有流程控制,Java语句总是从上至下执行的)

          1)分支结构:

                1.1)if 语句

格式1:if (逻辑表达式){                格式2:if (逻辑表达式) {                            格式3:if (逻辑表达式1) {

语句1;                                         语句1;                                                   语句1;

语句2;                                         语句2;                                                   语句2;

....                                                 ....                                                        .....

}                                                   }else{.....}                                             }else  if(逻辑表达式2){.....}

                                                        

分别称为,if语句、if....else语句、if.....else  if语句。逻辑表达式是boolean型,

格式1中:当逻辑表达式返回结果是true时,进行大括号中的语句体,返回结果是false时,不执行if语句体。

格式2中:如果逻辑表达式返回结果是true时,执行if中语句体,否则执行else中的语句(属于不是就是的意思,不是if中的语句,就是else中的语句)。

格式3中:如果逻辑表达式1返回结果是true时,执行if中语句体,否则再判断else  if中的逻辑表达式2,如果返回true则执行else if后的语句体,返回false即不执行。格式3可以多次扩展:if  (逻辑表达式1){.....}

                                                                           else  if(逻辑表达式2){......}

                                                                           else  if(逻辑表达式3){......} 

                                                                           ........

在采用多次判断时,要注意代码的可读性。

注意:格式2中,在if里面嵌套if语句,则可以写成格式3的形式,或者说,格式3就是if嵌套的简便写法。

           当大括号中只有一条语句时,大括号可以省略!

                1.2)switch 语句

格式1:switch(标识)

 {

    case 表达式1:语句1...;

    case 表达式2:语句2...;

    case 表达式1:语句3...;

    ........

   default :语句....;

   }

 switch后面的标识和case后面的表达式都是整型但不能是long型的。(其实在JDK7.0后switch - case支持字符串)

 当 标识==表达式1/2/3...,则从语句1/2/3...开始执行,直到全部执行完。


格式2:switch(标识)

 {

    case 表达式1:语句1...;break;

    case 表达式2:语句2...;break;

    case 表达式1:语句3...;break;

    ........

   default :语句....;

   }

 当 标识==表达式1/2/3...,则从语句1/2/3...开始执行,执行到break跳出switch结构,不再执行下面语句。

例1:

[java] view plain copy public class Test{       public static void main(String[] args){       char expression = 'A';//定义字符'A'       switch(expression){//执行switch语句       case 'A':  System.out.println("一等奖");  break;//当expression=='A',输出一等奖,并退出switch语句。       case 'B':  System.out.println("二等奖");  break;       case 'C':  System.out.println("三等奖");  break;      default:  System.out.println("谢谢惠顾");    }  }//注意,这里虽然是字符'A',但我们知道字符型char是可以自动类型转换成为int型的  }  

          2)循环结构:在一定条件下,反复执行一段代码。

2.1) for  循环:使用最多的循环。

2.1.1)循环的要素:循环条件(循环变量初始化,循环变量向着循环结束的方向改变),循环体。

for(循环变量初始化 ; 循环结束条件 ; 循环变量的改变){..循环体..}

例2:

int sum = 0; for(int i = 0;i < 100;i++){  sum+=i; } System.out.println(sum);

for  循环在实际中用得非常普遍,主要用来固定执行固定次数的循环,所以经常用来遍历集合和数组中的元素。他的增强版:foreach 循环,主要用来遍历输出数组和集合,尤其在集合中,可以简化代码(集合会使用到)。

2.1.2)for循环还可以省略括号中的三个表达式:但是括号中的分号不能省略,我们可以把循环变量的初始化放在循环外,循环变量的改变放在循环体中。注意:这里的循环结束条件i<100 其实也可以省略,不会报错,但是就成为了死循环(永远循环无法结束)。

例3:

 int sum = 0; int i = 0; for( ; i < 100 ; ){  sum+=i;  i++; } System.out.println(sum);

2.2) while 循环:当....时,也称作当型循环。

例4:将上面for循环改造为while循环

 int sum = 0; int i = 0; while(i < 100){  //当i<100执行循环体,不满足条件式时退出  sum+=i;  i++; } System.out.println(sum);

当i < 100时,执行循环体中的语句。当初始条件不满足时,那么不会进入循环体。例如将初始条件改为 i=101;那么 i<100 不成立,将不会执行循环。

2.3) do...while 循环:do...直到...,也称直到型循环。

例5:

int sum = 0; int i = 0; do{            //不管循环条件如何,先执行一次循环体  sum+=i;  i++; }while(i < 100);   //执行一次循环体后,在进行条件判断。以分号结尾,表示循环到此结束。 System.out.println(sum);

先执行一次循环体,知道遇到while才判断条件,跟while循环相比较,do....while循环至少执行一次循环体,而while可能一次都不执行。

2.4)嵌套循环、break和continue;

2.4.1)循环嵌套:在循环体中嵌套循环结构,叫做循环的嵌套。

例6:

for(int i = 0;i<100;i++){   for(int j = 0;j<50;j++){    System.out.print(j+" ");}   System.out.println();}

以上代码将0-49的整数输出100次,那么循环需要执行的代码其实100*50次。在一定程度上嵌套的层数越多,程序执行需要的时间越长,代码越不具有可读性。一般不建议两层以上的嵌套。

2.4.2)break:控制循环结构。

当我们在循环体中添加break时,即表示要退出循环。我们依然用改造上面的例子来说明:

例7:

int sum = 0;
 for(int i = 0;i<100;i++){
  sum+=i;
  
if(sum>=3000){   //添加循环控制条件,当和大于等于3000时,退出循环。
   break;
  }

 }
 System.out.println(sum);//3003
注意,break是跳出循环,不再执行后面的循环。在while和do....while中依然适用。而且单独的break只能跳出一层循环,如果需要跳出多层循环的话,需要配合标签使用
例如:
out:  //在外循环定义标签for(int i = 0;i<100;i++){  for(int j = 0;j<50;j++){   System.out.print(j+" ");    if(j>25){    break out;  //直接跳出标签所在的循环,即跳出外循环。}  }   System.out.println(); }

2.4.3)continue:跳过本次循环
continue与break用法相似,不过他的作用是跳过本次循环,直接进行下一次循环,在嵌套中也可以配合标签使用跳过外层循环。
例如:
out:  //在外循环定义标签for(int i = 0;i<100;i++){  for(int j = 0;j<50;j++){   System.out.print(j+" ");    if(j>5){    continue out;  //直接跳过标签所在的循环的本次循环。}  }   System.out.println(); }



0 0
原创粉丝点击