Java语法基础(三)

来源:互联网 发布:java变量的三要素 编辑:程序博客网 时间:2024/05/21 06:16

流程控制语句


  • 顺序结构
  • 选择结构
  • 循环结构

顺序结构

选择结构

选择结构(if语句)

  • 格式1:

         if(关系表达式) {                 语句体        }
  • 格式2:

         if(关系表达式) {                  语句体1;         }else {                  语句体2;         }
  • 格式3:

         if(关系表达式1) {                  语句体1;         }else  if (关系表达式2) {                  语句体2;         }         …         else {                  语句体n+1;         }

选择结构(switch语句)

  • 语句格式

    switch(表达式) {          case 值1:            语句体1;            break;            case 值2:            语句体2;            break;            …            default:                语句体n+1;            break;    }
  • 格式的解释

    switch : 表示这是switch选择结构表达式: 这个地方的取值是有限定的        byte,short,int,char        JDK5以后可以是枚举        JDK7以后可以是字符串case: 后面跟的是要和表达式进行比较的值语句体: 要执行的代码break: 表示中断,结束的意思,可以控制switch语句的结束。default: 当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。
  • 执行流程

    • 首先计算出表达式的值

    • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

  • 注意事项

    • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

    • default可以省略吗?

      可以省略。一般不建议。除非判断的值是固定的。(单选题)
    • break可以省略吗?

      可以省略,一般不建议。否则结果可能不是你想要的
    • default的位置一定要在最后吗?

      可以出现在switch语句任意位置。
    • switch语句的结束条件

      遇到break执行到程序的末尾
/*    看程序写结果*/class SwitchTest {    public static void main(String[] args) {        int x = 2;        int y = 3;        switch(x){            default:                y++;                break;            case 3:                y++;            case 4:                y++;        }        System.out.println("y="+y);   //  4        System.out.println("---------------");        int a = 2;        int b = 3;        switch(a){            default:                b++;            case 3:                b++;            case 4:                b++;        }        System.out.println("b="+b);   //  6    }}

if和case的区别


在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?


  • if语句使用场景

    针对结果是boolean类型的判断
    针对一个范围的判断
    针对几个常量值的判断

  • switch语句使用场景

    针对几个常量值的判断

循环结构

循环结构(for)

  • 语句格式

    for(初始化语句;判断条件语句;控制条件语句) {         循环体语句;    }
  • 执行流程

    A: 执行初始化语句B: 执行判断条件语句,看其结果是true还是false    如果是false,循环结束。    如果是true,继续执行。C: 执行循环体语句D: 执行控制条件语句E: 回到B继续

    这里写图片描述

  • 注意事项

    A: 判断条件语句的结果是一个boolean类型B: 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。C: 一般来说:有左大括号就没有分号,有分号就没有左大括号
/*    需求:在控制台输出所有的”水仙花数”    分析:        我们都不知道什么叫"水仙花数",你让我怎么做呢?        所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。        举例:153就是一个水仙花数。        153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153        A:三位数其实是告诉了我们范围。        B:通过for循环我们就可以实现获取每一个三位数          但是麻烦是如何获取这个三位数的个,十,百位上的数据          我们如何获取一个数据的个,十,百呢?            假设有个一个数据:153            ge: 153%10 = 3            shi: 153/10%10 = 5            bai:153/10/10%10 = 1            qian:x/10/10/10%10            wan:  x/10/10/10/10%10            ...        C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较          如果相同,就把该数据在控制台输出。*/class ForDemo6 {    public static void main(String[] args) {        //三位数其实是告诉了我们范围。        for(int x=100; x<1000; x++) {            int ge = x%10;            int shi = x/10%10;            int bai = x/10/10%10;            //让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较            if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {                //如果相同,就把该数据在控制台输出。                System.out.println(x);            }        }    }}

循环结构(while)

  • 语句格式

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

循环结构(do…while)

  • 语句格式

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

    这里写图片描述

循环语句的区别


  • do…while循环至少执行一次循环体。而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

跳转控制语句


  • break 中断
  • continue 继续
  • return 返回

跳转控制语句(break)

  • break的使用场景

    • 在选择结构switch语句中
    • 在循环语句中
    • 离开使用场景的存在是没有意义的
  • break的作用

    • 跳出单层循环
    • 跳出多层循环
    • 带标签的跳出

      格式:        标签名: 循环语句标签名要符合Java的命名规则
class BreakDemo {    public static void main(String[] args) {        //在 switch 或 loop 外部中断        //break;        //跳出单层循环        for(int x=0; x<10; x++) {            if(x == 3) {                break;            }            System.out.println("HelloWorld");        }        System.out.println("over");        System.out.println("-------------");        wc:for(int x=0; x<3; x++) {            nc:for(int y=0; y<4; y++) {                if(y == 2) {                    //break nc;                    break wc;                }                System.out.print("*");            }            System.out.println();        }    }}

跳转控制语句(continue)

  • continue的使用场景

    • 在循环语句中
    • 离开使用场景的存在是没有意义的
  • continue的作用

    • 单层循环对比break,然后总结两个的区别
      • break 退出当前循环
      • continue 退出本次循环
/*    continue:继续    使用场景:        循环中。离开此场景无意义。    测试,找到和break的区别:        break:跳出单层循环        continue:跳出一次循环,进入下一次的执行    练习题:        for(int x=1; x<=10; x++) {            if(x%3==0) {                //在此处填写代码            }            System.out.println(“Java基础班”);        }        我想在控制台输出2次:“Java基础班“            break;        我想在控制台输出7次:“Java基础班“            continue;        我想在控制台输出13次:“Java基础班“               System.out.println(“Java基础班”);*/class ContinueDemo {    public static void main(String[] args) {        for(int x=0; x<10; x++) {            if(x == 3) {                //break;                continue;            }            System.out.println(x);        }    }}

跳转控制语句(return)


  • return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。

0 0
原创粉丝点击