Java基础学习:流程控制02(重点看代码中的:hashCode比较)

Java基础学习:流程控制02

  • 顺序结构:

    • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序结构一句一句执行;

    • 顺序结构是最简单的算法结构:A--B

    • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

       

  • 选择结构:

    • if 单选择结构:

      • 我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样的一个过程在程序中用if语句来表示;

        //语法:
        if(布尔值){
           //如果布尔值表达式为true将执行的语句
         
        }
      • 代码例子:

        public class IfDemo01 {

           public static void main(String[] args) {

               Scanner scanner =new Scanner(System.in);
               System.out.println("请输入内容:");

               String s=scanner.nextLine();
               //equals:判断字符串是否相等
               if(s.equals("Hello")){
                   System.out.println("s:"+s);
              }
               System.out.println("End");
               scanner.close();
          }
        }
    • if 双选择结构:

      • 那现在有个需求,公司要收购一个软件,成功了,给人支付100万元,失败了,自己找人开发;这样的需求用一个if就搞不定了,我们需要有2个判断,需要一个双选择结构,所以就有了if--else结构;

        //语法:
        if(布尔表达式){
           //如果布尔表达式的值为true
        }else{
           //如果布尔表达式的值为false
        }
      • 代码例子:

        public class IfDemo02 {
           public static void main(String[] args) {

               //考试分数大于60分就是及格,小于60分就不及格

               Scanner scanner=new Scanner(System.in);
               System.out.println("输入一个分数:");

               int score=scanner.nextInt();

               if(score>60){
                   System.out.println("该分数及格");
              }else{
                   System.out.println("该分数不及格");
              }

               //注意:一定要关闭流
               scanner.close();
          }
        }
    • if 多选择结构:

      • 我们发现成绩有:A,B,C,D等级,存在区间多级判断;所以就需要多选择结构来处理这类问题;

      • 只要有一个if语句执行了,后面所有的if,,,else都会执行了;

      • 终究只会有一个满足;

        //语法
        if(布尔表达式1){
           //如果布尔表达式1的值为true执行该代码
        }else if(布尔表达式2){
           //如果布尔表达式2的值为true执行该代码
        }else if(布尔表达式3){
           //如果布尔表达式3的值为true执行该代码
        }else{
           //如果以上布尔表达式都不为true执行该代码
        }
      • 代码例子:

        public class IfDemo03 {
           public static void main(String[] args) {
               //考试分数大于60分就是及格,小于60分就不及格

               Scanner scanner=new Scanner(System.in);
               System.out.println("输入一个分数:");

               int score=scanner.nextInt();


               if(score==100){
                   System.out.println("恭喜满分");
              }else if(score >80 && score <100){
                   System.out.println("良好");
              }else if(score>60 && score<80){
                   System.out.println("合格");
              }else if(score>0 && score <60){
                   System.out.println("不及格");
              }else{
                   System.out.println("成绩不合法");//写程序一定要严谨
              }

               //注意:一定要关闭流
               scanner.close();
          }
        }
    • 嵌套的if结构:

      • If里面嵌套if;

        //语法
        if(布尔表达式1){
           //如果布尔表达式1的值为true,则进行判断里面的if
           if(布尔表达式2){
               //如果布尔表达式2的值为true,则执行代码块
          }
        }

         

      • 代码例子:

         

    • switch多选择结构:

      • 多选择结构还有一个实现方式就是switch case语句;

      • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支;

      • switch语句中的变量类型可以是:

        • byte ,short ,int 或者char;

        • 从Java7开始:switch支持String类型了;

        • 同时case标签必须为字符串常量或字面量;

        //语法:
        switch(expression){
           case value:
               //语句
               break;//可选
           case value:
               //语句
               break;//可选
           default://可选
               //语句
        }
      • 代码例子1:

        public class SwitchDemo01 {
           public static void main(String[] args) {

               /**
                * case穿透 现象:
                * 1,如果不写break:后面都可以输出
                * 2,switch:匹配一个具体的值;
                * 3,最好都把break加上
                */

               char grade='F';
               switch (grade){
                   case 'A':
                       System.out.println("优秀");
                       break;
                   case 'B':
                       System.out.println("良好");

                   case 'C':
                       System.out.println("合格");

                   case 'D':
                       System.out.println("差");

                   default:
                       System.out.println("输入的等级不对,请从新输入");
              }

          }
        }

        代码案例2:

        public class SwitchDemo02 {
           public static void main(String[] args) {

               String name="张三";
               //字符的本质:还是数字


               //反编译:java----class(字节码文件)---反编译(IDEA)
               /**
                * 1,找到项目结构:File--Project Structure
                * 2,打开文件夹:当前包鼠标右键--show in explorer
                * 3,找到对应文件,copy过去,可以打开class文件了
                */

               /*
               重点:
              反编译后:对比看出
              1,name的值改为:name.hashCode();(每一个对象都有自己的一个hashCode)
              2,case的值改为:对应的具体数字
             
             
              hashCode():是通过特定的算法生成的;
              每一个中文都有一个特定的hashCode值;
             
              最终:比较的就是hashCode值是否相同;
               */
               switch (name){
                   case "李四":
                       System.out.println("李四");
                       break;
                   case "王五":
                       System.out.println("王五");
                       break;
                   case "张三":
                       System.out.println("张三");
                       break;
                   default:
                       System.out.println("都不匹配");
              }
          }
        }

         

  • 总结:

    • 所以的流程控制语句都可以互相嵌套,互相影响;

    • 学习IDEA反编译;

    •  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   gzs1024  阅读(176)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示