百木园-与人分享,
就是让自己快乐。

java结构之选择语句

------------恢复内容开始------------

选择结构

  • 选择结构分为为i语句和switch语句

目录

  • 选择结构
    • if语句
      • 3.if多选择结构
      • 4.if嵌套选择结构
    • Switch多选择结构

if语句

1.if单选择语句

结构图:(用输出语句打了一个简单结构图)

代码示例:

public class IfDemo01 {
    public static void main(String[] args) {
        /*if单选择语句
         if(布尔值为true){
         代码块
         }
         */
        Scanner sc=new Scanner(System.in);
        System.out.println(\"请输入内容:\");
        //将键盘输入的值传给s
        String s=sc.nextLine();
        //equals判断字符串是否相等
        if (s.equals(\"Hello\")){
        System.out.println(\"字符串相等 ,输入的字符串为\"+s);
        }
        System.out.println(\"End\");
        sc.close();
    }
}

输出:

请输入内容:
Hello
字符串相等 ,输入的字符串为Hello
End

2.if双选择结构

代码示例:

public class IfDemo02 {
    public static void main(String[] args) {
        /*if双选择语句(布尔值为ture执行代码块1,为false执行代码快2)
         if(布尔值为true){
         代码块1
         }else{
         代码块2
         }
         */
        //判断输入的考试分数是否及格,小于60为不及格
        Scanner sc=new Scanner(System.in);
        System.out.println(\"输入考试成绩:\");
        int score= sc.nextInt();
        if (score<60){
            System.out.println(\"不及格\");
        }else {
            System.out.println(\"成绩及格\");
        }
        sc.close();
    }
}

输出:

输入考试成绩:
90
成绩及格

3.if多选择结构

代码示例:

public class IfDemo03 {

    //if多选择结构.if与else if中的语句有一个为真,则执行对应的代码快,若为false执行else中的内容
    /*
    if(){
    }else if(){
    }else if(){
    }......
    else{}
     */
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println(\"请输入成绩:\");
        int score=sc.nextInt();
        if (score >=90) {
            System.out.println(\"优秀\");
        }else if (score<90&&score>=80){
            System.out.println(\"良好\");
        }else if (score<80&&score>=60){
            System.out.println(\"及格\");
        }else if (score>=0&&score<60){
            System.out.println(\"不及格\");
        }
        else {
            System.out.println(\"请输入正确的成绩\");
        }
    }
}

输出:

请输入成绩:
80
良好
请输入成绩:
50
不及格
请输入成绩:
100
优秀

4.if嵌套选择结构

代码示例:

public class IfDemo04 {
    public static void main(String[] args) {
        //if嵌套选择结构,用嵌套快速查找一个数
       /* if (外层表达式){
            if (内层表达式){
                内层代码块1
            }else{
                内层代码块2
            }
        }else{
            外层代码块
        }
        */
        //判断学生成绩超过60的选手,是否为优秀(score>=90)
        Scanner sc=new Scanner(System.in);
        System.out.println(\"输入学生成绩:\");
        int score=sc.nextInt();
        if (score>=60){
            if (score>=90){
                System.out.println(\"恭喜你,你的成绩为优秀\");
            }else {
                System.out.println(\"你的成绩为\"+score);
            }
        }else if (score<60&&score>=0){
            System.out.println(\"不及格\");
        }
    }
}

输出:

输入学生成绩:
90
恭喜你,你的成绩为优秀
输入学生成绩:
80
你的成绩为80

Switch多选择结构

switch(value){

case value1:

//语句

break;//可选

//case的数量可以是任意个

case value2:

break;

default://可选

//语句

}

代码示例:

public class SwitchDemo01 {
    public static void main(String[] args) {
        //
        char grade=\'C\';
        switch (grade){
            //break的作用是防止case击穿,如果不加break,语句会把语句执行下去
            case \'A\':
                System.out.println(\"优秀\");
                break;
            case \'B\':
                System.out.println(\"良好\");
                break;
            case \'C\':
                System.out.println(\"及格\");
            case \'D\':
                System.out.println(\"不及格\");
        }
    }
}

输出:

及格
不及格

注:输入值为\'C\',本应输出结果\"及格\",但是因为在输出语句后面没有加break;及时跳出循环,导致,case击穿,把下面的”不及格“也同时输出了!

default与if中的else语句类似,当输入的值,没有在各个value值中间时,执行default对应的代码块

代码案例:

package com.ling.struct;

public class SwitchDemo02 {
    public static void main(String[] args) {
        //jdk7之后,表达式结果可以是字符串
        String name=\"\";
        switch (name){
            case  \"小星\":
            System.out.println(\"你好,小星\");

            break;
            case   \"小爱\":
            System.out.println(\"你好,小爱\");
            break;
            default:
                System.out.println(\"啥也不是!\");
        }
    }
}

输出结果:

啥也不是!

深入研究循环中的字符串值比较

因为字符的本质还是数字

在java中,我们都知道有java通过编译形成的字节码文件-------通过反编译来查看就可知道其中原理

通过查看idea中的反编译文件,可以看到

public class SwitchDemo02 {
    public SwitchDemo02() {
    }

    public static void main(String[] args) {
        String name = \"小星\";
        byte var3 = -1;
        //通过哈希表,可以知道,每一个对象(在这里是字符串)都有对应的哈希值
        //通过hashcode()方法获取到对象的哈希值,再进行比较,就相当于比较字符串了
        switch(name.hashCode()) {
        case 756720:
            if (name.equals(\"小星\")) {
                var3 = 0;
            }
        default:
            switch(var3) {
            case 0:
                System.out.println(\"你好,小星\");
            default:
            }
        }
    }

------------恢复内容结束------------


来源:https://www.cnblogs.com/lingstar/p/16448900.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » java结构之选择语句

相关推荐

  • 暂无文章