【JAVA基础】03 Java语言基础

前言:流程控制语句

  • 什么是流程控制语句

    • 流程控制语句:可以控制程序的执行流程。

  • 流程控制语句的分类

    • 顺序结构

    • 选择结构

    • 循环结构

  • 执行流程:

    • 从上往下,依次执行。

  • 案例演示

    • 输出几句话看效果即可

    • class Demo1_Sequence {                            //sequence 顺序
          public static void main(String[] args) {
              System.out.println("Hello World!11111");
              System.out.println("Hello World!3333");
              System.out.println("Hello World!22222");
              System.out.println("Hello World!44444");
          }
      }

 

 1. 选择结构

1.1 选择结构if语句

  • 选择结构的分类

    • if语句

    • switch语句

  • if语句有几种格式

    • 格式1

      • if (比较表达式) { 语句体; }
      • /*
        * C:if语句的格式1
        * 
                if(比较表达式) {
                    语句体;
                }
        * D:执行流程:
            * 先计算比较表达式的值,看其返回值是true还是false。
            * 如果是true,就执行语句体;
            * 如果是false,就不执行语句体;
        */
        class Demo1_If {
            public static void main(String[] args) {
                int age = 17;
        
                if (age >= 18) {
                    System.out.println("可以浏览本网站");
                }
        
                System.out.println("完了");
            }
        }
        View Code
    • 格式2

      • if (比较表达式)  {
        语句体1;
        }else {
        语句体2;
        }

      • /*
        * A:if语句的格式2
        * 
                if(比较表达式) {
                    语句体1;
                }else {
                    语句体2;
                }
        * B:执行流程:
            * 首先计算比较表达式的值,看其返回值是true还是false。
            * 如果是true,就执行语句体1;
            * 如果是false,就执行语句体2;
        * C:案例演示
            * a:获取两个数据中较大的值
            * b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数
        
            * 注意事项:else后面是没有比较表达式的,只有if后面有。
        */
        class Demo3_If {
            public static void main(String[] args) {
                /*int x = 0;
                if (x == 1) {
                    System.out.println("男厕所欢迎您");
                }else {
                    System.out.println("女厕所欢迎您");
                }*/
                
                //a:获取两个数据中较大的值
                /*int x = 10;
                int y = 20;
                int z;
        
                if (x > y) {
                    z = x;
                }else {
                    z = y;
                }
        
                System.out.println(z);*/
                
                //b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数
                int num = 11;
                if (num % 2 == 0) {
                    System.out.println(num + "是一个偶数");
                }else {
                    System.out.println(num + "是一个奇数");
                }
            }
        }
        View Code
    • 格式3

      • if (比较表达式1)  {
        语句体1;
        }else if (比较表达式2)  {
        语句体2;
        }else if  (比较表达式3) {
        语句体3;
        }
        ...
        else {
        语句体n+1;
        }

      • /*
        * A:if语句的格式3:
        * 
                if(比较表达式1) {
                    语句体1;
                }else if(比较表达式2) {
                    语句体2;
                }else if(比较表达式3) {
                    语句体3;
                }
                ...
                else {
                    语句体n+1;
                }
        * B:执行流程:
            * 首先计算比较表达式1看其返回值是true还是false,
            * 如果是true,就执行语句体1,if语句结束。
            * 如果是false,接着计算比较表达式2看其返回值是true还是false,
            
            * 如果是true,就执行语句体2,if语句结束。
            * 如果是false,接着计算比较表达式3看其返回值是true还是false,
            
            * 如果都是false,就执行语句体n+1。
        * C:注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示 
        */
        class Demo5_If {
            public static void main(String[] args) {
                int x = 2;
                if (x == 1) {
                    System.out.println("男厕所欢迎您");
                }else if (x == 0) {
                    System.out.println("女厕所欢迎您");
                }else {
                    System.out.println("无法识别您的性别");
                }
            }
        }
        View Code
  • 选择结构if语句注意事项
    • 比较表达式无论简单还是复杂,结果必须是boolean类型
    • if语句控制的语句体如果是一条语句,大括号可以省略;
      • 如果是多条语句,就不能省略。建议永远不要省略。
    • 一般来说:有左大括号就没有分号,有分号就没有左大括号
    • /*
      *    a:比较表达式无论简单还是复杂,结果必须是boolean类型
          * b:if语句控制的语句体如果是一条语句,大括号可以省略;
            * 如果是多条语句,就不能省略。建议永远不要省略。
          * c:一般来说:有左大括号就没有分号,有分号就没有左大括号
      
      */
      class Demo2_If {
          public static void main(String[] args) {
              int age = 17;
      
              if (age >= 18 && age <= 60) {
                  System.out.println("可以浏览本网站");
                  //int x = 10;                是两句话,int x声明是一句,x = 10 赋值是一句
              }
              System.out.println("完了");
              
          }
      }
      View Code
  • if语句的格式2和三元的相互转换问题
    • if语句和三元运算符完成同一个效果
      • /*
        * A:案例演示
            * if语句和三元运算符完成同一个效果
        * B:案例演示
            * if语句和三元运算符的区别
            
            * 三元运算符实现的,都可以采用if语句实现。反之不成立。
            
            * 什么时候if语句实现不能用三元改进呢?
                * 当if语句控制的操作是一个输出语句的时候就不能。
                * 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
        
        */
        class Demo4_If {
            public static void main(String[] args) {
                int x = 10;
                int y = 20;
                int z;
        
                if (x > y) {
                    //z = x;
                    System.out.println(x + "是最大值");
                }else {
                    //z = y;
                    System.out.println(y + "是最大值");
                }
        
                //System.out.println(z);
        
                int a = 20;
                int b = 30;
        
                int c = (a > b)? a : b;
            }
        }
        View Code 
    • if语句和三元运算符的区别

      • 三元运算符实现的,都可以采用if语句实现。反之不成立。

    • 什么时候if语句实现不能用三元改进呢?

      • 当if语句控制的操作是一个输出语句的时候就不能。

      • 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。

  • 选择结构if语句的嵌套使用
    • /*
      * A:案例演示
          * 需求:获取三个数据中的最大值
          * if语句的嵌套使用。
      */
      class Demo6_IfIf {
          public static void main(String[] args) {
              int a = 40;
              int b = 50;
              int c = 30;
              
              if (a > b) {
                  if (a > c) {
                      System.out.println(a + "是最大值");
                  }else {
                      System.out.println(c + "是最大值");
                  }
      
              }else {    //b >= a
                  if (b > c) {
                      System.out.println(b + "是最大值");
                  }else {
                      System.out.println(c + "是最大值");
                  }
              }
          }
      }
      View Code

1.2  选择结构switch语句

  • switch语句的格式

    • switch (表达式)  {                        //基本数据类型可以接收byte,short,char,int
      case 值1:                               //引用数据类型可以接收枚举(JDK1.5),String字符串(JDK1.7)
               语句体1;
          break;
      case 值2
               语句体2;
          break;
           …
      default:
               语句体n+1;
          break; }

  • switch语句的格式解释

  • 面试题

    • byte可以作为switch的表达式吗?

      • 可以。所有计算可以自动补位到int类型的,都可以
    • long可以作为switch的表达式吗?

      • 不可以
    • String可以作为switch的表达式吗?

      • 1.7版本JDK后可以
  • 执行流程

    • 先计算表达式的值

    • 然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句

    • class Demo1_Switch {
          public static void main(String[] args) {
              /*
              * A:switch语句的格式
              *        int x = 10;
                      switch(表达式) {        //基本数据类型可以接收byte,short,char,int
                            case 值1:        //引用数据类型可以接收枚举(JDK1.5)String字符串(JDK1.7)
                              语句体1;
                              break;
                              case 值2:
                              语句体2;
                              break;
                              …
                              default:    
                              语句体n+1;
                              break;
                      }
               
              * B:switch语句的格式解释
              * C:面试题
                  * byte可以作为switch的表达式吗?
                  * long可以作为switch的表达式吗?
                  * String可以作为switch的表达式吗?
              * C:执行流程
                  * 先计算表达式的值
                  * 然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句
              */
      
              String name = "rose";
              String gender = "女";
              switch (gender) {
              case "男士":
                  System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");
              break;
              case "女士":
                  System.out.println(name + "是一位" + gender + "喜欢逛街购物美容");
              break;
              default:
                  System.out.println(name + "是一位" + gender + "打雌性激素维持美貌容颜");
              break;
              }
          }
      }
      View Code
  • 选择结构switch语句的练习
    • 整数(给定一个值,输出对应星期几)

    • class Test1_Switch {
          public static void main(String[] args) {
              //* A:整数(给定一个值,输出对应星期几)
              int week = 1;
              switch (week) {
              case 1:
                  System.out.println("星期一");
              break;
              case 2:
                  System.out.println("星期二");
              break;
              case 3:
                  System.out.println("星期三");
              break;
              case 4:
                  System.out.println("星期四");
              break;
              case 5:
                  System.out.println("星期五");
              break;
              case 6:
                  System.out.println("星期六");
              break;
              case 7:
                  System.out.println("星期日");
              break;
              default:
                  System.out.println("对不起没有对应的星期");
              break;
              }
          }
      }
      View Code
  • 选择结构switch语句的注意事项
    • 案例演示

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

      • default可以省略吗?

        • 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。

        • 特殊情况:

          • case就可以把值固定。

          • A,B,C,D

      • break可以省略吗?

        • 最后一个可以省略,其他最好不要省略

        • 会出现一个现象:case穿透。

        • 最终我们建议不要省略

      • default一定要在最后吗?

        • 不是,可以在任意位置。但是建议在最后。

      • switch语句的结束条件

        • 遇到break就结束了

        • 执行到switch的右大括号就结束了

  • 选择结构switch语句练习
    • 看程序写结果:

    • class Test2_Switch {
          public static void main(String[] args) {
              // A:看程序写结果:
      
              /*int x = 2;
              int y = 3;
              switch(x){
                  default:
                      y++;
                      break;
                  case 3:
                      y++;
                  case 4:
                      y++;
              }
              System.out.println("y="+y); // 输出4  */
          
          //B:看程序写结果:
              
              int x = 2;
              int y = 3;
              switch(x){
                  default:
                      y++;
                  case 3:
                      y++;
                  case 4:
                      y++; 
              }  
              System.out.println("y="+y); // 输出6
          }
      }
      View Code
      •  省略了break,会出现case穿透现象,导致逻辑出错

  • 选择结构if语句和switch语句的区别
    • 总结switch语句和if语句的各自使用场景

      • switch建议判断固定值的时候用

      • if建议判断区间或范围的时候用

    • 案例演示

      • 分别用switch语句和if语句实现下列需求:

        • 键盘录入月份,输出对应的季节

        • import java.util.Scanner;
          class Test3_SwitchIf {
              public static void main(String[] args) {
                  /*
          
                  * 键盘录入月份,输出对应的季节
                  一年有四季
                  3,4,5春季
                  6,7,8夏季
                  9,10,11秋季
                  12,1,2冬季
                  */
                  Scanner sc = new Scanner(System.in);    //创建键盘录入对象
                  System.out.println("请输入月份");
                  int month = sc.nextInt();                //将键盘录入的结果存储在month
                  /*switch (month) {
                  case 3:
                  case 4:
                  case 5:
                      System.out.println(month + "月是春季");
                  break;
                  case 6:
                  case 7:
                  case 8:
                      System.out.println(month + "月是夏季");
                  break;
                  case 9:
                  case 10:
                  case 11:
                      System.out.println(month + "月是秋季");
                  break;
                  case 12:
                  case 1:
                  case 2:
                      System.out.println(month + "月是冬季");
                  break;
                  default:
                      System.out.println("对不起没有对应的季节");
                  break;
                  }*/
          
                  //用if语句来完成月份对应季节
                  if (month > 12 || month < 1) {
                      System.out.println("对不起没有对应的季节");
                  }else if (month >= 3 && month <= 5) {
                      System.out.println(month + "月是春季");
                  }else if (month >= 6 && month <= 8) {
                      System.out.println(month + "月是夏季");
                  }else if (month >= 9 && month <= 11) {
                      System.out.println(month + "月是秋季");
                  }else {
                      System.out.println(month + "月是冬季");
                  }
              }
          }
          View Code

 

 

2. 循环结构

2.1 循环结构概述

  • 循环结构的分类

    • for

    • while

    • do...while

  • B:循环结构for语句的格式:

  • for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; }

  • C执行流程:

    • a:执行初始化语句

    • b:执行判断条件语句,看其返回值是true还是false

      • 如果是true,就继续执行

      • 如果是false,就结束循环

    • c:执行循环体语句;

    • d:执行循环后的操作表达式

    • e:回到B继续。

  • D:案例演示

    • 在控制台输出10次"helloworld"

###04.02_Java语言基础(循环结构for语句的练习之获取数据)

  • A:案例演示

    • 需求:请在控制台输出数据1-10

    • 需求:请在控制台输出数据10-1

  • B:注意事项

    • a:判断条件语句无论简单还是复杂结果是boolean类型。

    • b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。

    • c:一般来说:有左大括号就没有分号,有分号就没有左大括号

###04.03_Java语言基础(循环结构for语句的练习之求和思想)

  • A:案例演示

    • 需求:求出1-10之间数据之和

  • B:学生练习

    • 需求:求出1-100之间偶数和

    • 需求:求出1-100之间奇数和

###04.04_Java语言基础(循环结构for语句的练习之水仙花)

  • A:案例演示

    • 需求:在控制台输出所有的”水仙花数”

    • 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

    • 举例:153就是一个水仙花数。

    • 153 = 111 + 555 + 333 = 1 + 125 + 27 = 153

###04.05_Java语言基础(循环结构for语句的练习之统计思想)

  • A:案例演示

    • 需求:统计”水仙花数”共有多少个

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/zoe233/p/12735842.html
今日推荐