流程控制语句

流程控制语句

顺序结构

写在前面的先执行,写在后面的后执行

选择结构

if

  1. 当条件只有一对立面的时候

     if(关系表达式true){
         语句体;
     }
     if(关系表达式true)//不建议,代码可读性差
         语句体;
    
    1. 关系表达式无论简单还是复杂,结果必须是boolean类型
    2. if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略
    3. if结构后面没有分号;
  2. 当条件有两个对立面的时候

     if(关系表达式) {
          语句体1;
     }else {
          语句体2;
     }
    
    1. else否定离他最近的if
    2. 关系表达式true执行语句体1,false执行语句体2
    3. 三元运算符一定可以转换为if else语句,但if else语句不一定能转换为三元运算符
    4. 因为三元运算符必须要求有一个结果返回,如果语句体是一个输出语句就不能转换为三元运算符
  3. 当条件有多个对立面的时候

     if(关系表达式1) {
         语句体1;
     }else if (关系表达式2) {
         语句体2;
     }
     …
     else {
         语句体n+1;
     }
    
    1. 首先判断关系表达式1看其结果是true还是false

      如果是true就执行语句体1

      如果是false就继续判断关系表达式2看其结果是true还是false

      如果是true就执行语句体2

      如果是false就继续判断关系表达式…看其结果是true还是false



      如果没有任何关系表达式为true,就执行语句体n+1。

    //满足java的语法要求,不会报错
    int x = 100;
    if(100>100);
    {   
        System.out.println("哈哈哈");
    }
    ------------
    输出
    哈哈哈

switch case

switch(expression){
case value :
   //语句
   break; //可选
case value :
   //语句
   break; //可选
//你可以有任意数量的case语句
default : //可选
   //语句
}
  1. 格式
    1. expression:
      表达式的取值:byte,short,int,char
      JDK5以后可以是枚举
      JDK7以后可以是String
    2. case后面跟的是要和表达式进行比较的值
    3. 语句体部分可以是一条或多条语句
    4. break表示中断,结束的意思,可以结束switch语句
    5. default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
  2. expression依次与case进行比较,遇到匹配的case,开始执行语句以及后面case的语句直到遇到break;结束,否则执行到程序的末尾
  3. 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉
  4. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  5. default位置任意,一般放在最后,可以省略。一般不建议。除非判断的值是固定的。

循环结构

for

for(初始化语句;判断条件语句;控制条件语句) {
     循环体语句;
}
  1. 初始化语句,执行一次,可以创建一些循环中使用的初始变量,循环结束后释放

  2. 判断条件语句,每次循环都执行

  3. 控制条件语句,每次循环结束之后运行

  4. for中的三个条件都可缺省,但;(分号)不能少

  5. for循环中变量的作用范围

    for中的变量只在for循环中有效

     int i = 0;
     for (int i = 0; i < 5; i++) {//error:Duplicate local variable i
             int h = 0;//error:Duplicate local variable h
             int j = 0;
     }
     int h = 0;//不报错,可以再次声明
     int j= 0;
    
  6. for循环的嵌套一般不超过三层(超过三层说明方案有问题)

while

先进行判断,true则执行语句,然后返回再判断,false离开循环体

基本格式
while(判断条件语句) {
     循环体语句;
}
扩展格式
初始化语句;
while(判断条件语句) {
     循环体语句;
     控制条件语句;
}

for循环和while循环的区别

  1. 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
  2. 场景区别:
    • for循环适合针对一个范围判断进行操作
    • while循环适合判断次数不明确操作

do while

先执行do里面的语句,然后判断,true则返回do语句,false结束循环

基本格式
do {
     循环体语句;
}while((判断条件语句);
扩展格式
初始化语句;
do {
     循环体语句;
     控制条件语句;
} while((判断条件语句);
  1. 三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的:
    • do…while循环至少会执行一次循环体。
    • for循环和while循环只有在条件成立的时候才会去执行循环体
  2. 写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。

跳转控制语句

注意break continue return执行之前的语句都会执行,只影响执行之后的语句

break

结束循环

  • 不带标签的break:跳出当前循环
  • 带标签的break:跳出标签处的循环
  1. break的使用场景:
    • 在选择结构switch语句中
    • 在循环语句中
    • 离开使用场景的存在是没有意义的
  2. break的作用:
    • 跳出单层循环
    • 跳出多层循环
      • 带标签的跳出
      • 格式:标签名: 循环语句
      • 标签名要符合Java的命名规则

//带标签的break:跳出外层循环
back:{
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if(j == 6) {
                    break back;//跳出外层循环
                }
                System.out.print(j+i+"\t");
            }
            System.out.print("\n");
        }
    }
//---------------------------------------------------
back:for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if(j == 6) {
            break back;//跳出外层循环
        }
        System.out.print(j+i+"\t");
    }
    System.out.print("\n");
}

continue

跳过当前循环

  1. continue的使用场景:
    • 在循环语句中
      -离开使用场景的存在是没有意义的
  2. continue的作用:
    • continue 退出本次循环,跳到循环的下一次

//带标签的continue:跳过外层本次循环,进入下一次
back:for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if(j == 6) {
            continue back;//跳过外层本次循环,进入下一次
        }
        System.out.print(j+i+"\t");
    }
    System.out.print("\n");
}

return

离开方法

  1. 存在分支时,每一条分支都要有return

你可能感兴趣的:(流程控制语句)