选择结构

if 单选择结构

概述

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

语法

if (布尔表达式){
   //如果布尔表达式为true将执行的语句
}

结构图

 

 

代码

//Java-零基础学习/src/process/Demo05
package process;

import java.util.Scanner;

public class Demo05 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);

       String s = scanner.nextLine();

       //字符串比较尽量少使用“==”
       //equals:判断字符串是否相等
       if (s.equals("Hello")){
           System.out.println("Hello");
      }
       
       System.out.println("End");

       scanner.close();
       
  }
}

 

if 双选择结构

概述

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

语法

if (布尔表达式){
   //如果布尔表达式的值为true
}
else
{
   //如果布尔表达式的值为false
}

结构图

 

 

代码

//Java-零基础学习/src/process/Demo06
package process;

import java.util.Scanner;

public class Demo06 {
   public static void main(String[] args) {
       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 多选择结构

概述

有这样一个例子,成绩的等级是有ABCD的,存在区间多级判断。比如90-100就是A,80-90就是B……在生活中我们很多时候的选择也不仅仅只有两个,所以我们需要一个多选择的结构来处理这类问题!

语法

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

结构图

 

 

注意点

  1. if 语句至多有一个 else 语句,else 语句在所有的 else if 语句之后。

  2. if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。

  3. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

代码

//Java-零基础学习/src/process/Demo07
package process;

import java.util.Scanner;

public class Demo07 {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);

       System.out.println("请输入成绩:");
       int score = scanner.nextInt();

       if (score == 100){
           System.out.println("S级");
      }
       else if (score < 100 && score >= 90){
           System.out.println("A级");
      }
       else if (score < 90 && score >= 80){
           System.out.println("B级");
      }
       else if (score < 80 && score >= 70){
           System.out.println("C级");
      }
       else if (score < 70 && score >= 60){
           System.out.println("D级");
      }
       else if (score < 60 && score >= 0){
           System.out.println("E级");
      }
       else
      {
           System.out.println("成绩不合法!");
      }

       scanner.close();
  }
}

嵌套的 if 结构

概述

使用嵌套的 if...else 语句是合法的,也就是说你可以在另一个 if 或者else if 语句中使用 if 或者 else if 语句。你可以像 if 语句一样嵌套 else if...else 语句。

语法

if (布尔表达式1){
   //如果布尔表达式1的值为true执行代码
   if (布尔表达式2){
   //如果布尔表达式2的值为true执行代码
  }
}

switch 多选择结构

概述

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

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

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

  1. byte、short、int 或者 char。

  2. 从 Java SE 7 开始,switch 支持字符串 String 类型了

  3. 同时 case 标签必须为字符串常量或者字面量。

语法

switch (expression){
   case value:
       //语句
       break;//可选
   case value:
       //语句
       break;//可选
   //你可以拥有任意数量的语句
   default://可选
       //语句
}

代码1

//Java-零基础学习/src/process/Demo08
package process;

public class Demo08 {
   public static void main(String[] args) {
       char grade = 'A';

       //case穿透:例如case ‘C’中没加break,它会输出及格、再接再厉、不及格和未知分数
       switch (grade){
           case 'A':
               System.out.println("优秀");
               break;//可选
           case 'B':
               System.out.println("良好");
               break;//可选
           case 'C':
               System.out.println("及格");
               break;//可选
           case 'D':
               System.out.println("再接再厉");
               break;//可选
           case 'E':
               System.out.println("不及格");
               break;//可选
           default:
               System.out.println("未知分数");

      }
  }
}

代码2

//Java-零基础学习/src/process/Demo09
package process;

public class Demo09 {
   public static void main(String[] args) {
       String name = "狂神";

       //JDK7的新特性,表达式结果可以是字符串
       switch (name){
           case "秦疆":
               System.out.println("秦疆");
               break;
           case "狂神":
               System.out.println("狂神");
               break;
           default:
               System.out.println("弄啥嘞");
      }
  }
}

 

补充

快捷键

按住Alt+Enter

 

 

它会自动补齐变量

 

 

反编译

Java 之中写出来的代码是 Java 文件,编译出来变成 class 文件,又称为字节码文件。这是我们看不懂的,因此需要通过反编译转换为 Java 文件或者其他格式的文件,这个操作用 IDEA 可以实现。

Java 文件能够执行,便会生成一个 class 文件。

点击项目结构

 

 

点击 project,会发现项目编译之后输出的路径

 

 

找到对应的 class 文件

 

 

使用 Notepad++ 打开,发现是一堆乱码

 

 

然后打开该项目所在的文件夹

 

 

然后把它拖拽过来

 

 

可以在 IDEA 里面打开字节码文件了

 

 

字节码文件代码如下

//Java-零基础学习/src/process/Demo09.class

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package process;

public class Demo09 {
   public Demo09() {
  }

   public static void main(String[] args) {
       String name = "狂神";
       byte var3 = -1;
       //发现将字符串用哈希算法转换为了一串数字,再用数字进行case匹配
       switch(name.hashCode()) {
       case 941788:
           if (name.equals("狂神")) {
               var3 = 1;
          }
           break;
       case 997472:
           if (name.equals("秦疆")) {
               var3 = 0;
          }
      }

       switch(var3) {
       case 0:
           System.out.println("秦疆");
           break;
       case 1:
           System.out.println("狂神");
           break;
       default:
           System.out.println("弄啥嘞");
      }

  }
}
 
posted @ 2022-10-09 01:31  poiuyjoey  阅读(66)  评论(0)    收藏  举报