Java语法基础(三)

流程控制语句


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

顺序结构

选择结构

选择结构(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值