欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java结构之选择语句,

来源: javaer 分享于  点击 5197 次 点评:283

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

相关栏目:

用户点评