java基础笔记 -- 6.选择结构-if语句-switch语句

一、流程控制

1.1 概述:

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果
有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现
我们要完成的功能。

1.2 顺序结构

public static void main(String[] args){
    //顺序执行,根据编写的顺序,从上到下运行
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
}

二、判断语句

2.1 判断语句 -- if

if (关系表达式) {

     语句体;

}

java基础笔记 -- 6.选择结构-if语句-switch语句_第1张图片

执行流程:

* 首先判断关系表达式看其结果是true还是false.

* 如果是true就执行语句体

* 如果是false就不执行语句体

public static void main(String[] args) {
        System.out.println("开始");

        // 定义两个变量
        int a = 10;
        int b = 20;
        // 变量使用if判断
        if (a == b) {
            System.out.println("a等于b");
        }

        int c = 10;
        if (a == c) {
          System.out.println("a等于c");
        }
        System.out.println("结束");
    }

2.2 判断语句 if...else

if(关系表达式) {

    语句体A;

}else {

    语句体B;

}

java基础笔记 -- 6.选择结构-if语句-switch语句_第2张图片

执行流程:

* 首先判断关系表达式看其结果true还是false

* 如果是true就执行语句体A

* 如果是false就执行语句体B

public static void main(String[] args) {
        // 判断给定的数据是奇数还是偶数
        // 定义变量 
        int a = 1;
        if (a % 2 == 0){
            System.out.println("a是偶数");
        } else {
            System.out.println("a是奇数");
        }
        System.out.println("结束");
    }

2.3 判断语句 if...else if...else

if语句第三种格式: if...else if...else

if (判断条件1) {
   执行语句1;  
} else if (判断条件2) {
   执行语句2;  
}
...
}else if (判断条件n) {
  执行语句n;   
} else {
   执行语句n+1; 

}

java基础笔记 -- 6.选择结构-if语句-switch语句_第3张图片

执行流程

* 首先判断关系表达式1看其结果是true还是false

* 如果是true就执行语句体1

* 如果是false就继续判断关系表达式2看其结果是true还是false.

* 如果是true就执行语句体2

* 如果是false就继续判断关系表达式...看其结果是true还是false

* ...

* 如果没有任何关系表达式为true,就执行语句体n+1

练习:

指定考试成绩,判断学生等级
90-100 优秀
80-89 好
70-79 良
60-69 及格
60 以下 不及格

public static void main(String[] args) {
		int score = 120;
		if (score >= 90 && score <= 100) {
			System.out.println("优秀");
		} else if (score >= 80 && score < 90) {
			System.out.println("好");
		} else if (score >= 70 && score < 80) {
			System.out.println("良");
		} else if (score >= 60 && score < 70) {
			System.out.println("及格");
		} else if (score >= 0 && score < 60) {
			System.out.println("不及格");
		} else { // 单独处理边界之外的不合理情况
			System.out.println("数据错误");
		}
	}

2.4 if语句和三元运算符的互换

在某些简单的应用中,if语句是可以和三元运算符互换使用的。

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    //定义变量,保存a和b的较大值
    int c;
    if(a > b) {
       c = a;  
    } else {
       c = b;  
    }
    //可以上述功能改写为三元运算符形式
    c = a > b ? a:b;
}

三、选择语句

3.1 选择语句--switch

* switch语句格式:

switch(表达式) {

  case 常量值:

     语句体1;

     break;

case 常量值:

     语句体2;

     break;

 ...

 default:

    语句体n+1;

     break;

}

执行流程:

* 首先计算出表达式的值

* 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

* 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

public static void main(String[] args) {
        // 定义变量,判断是星期几
        int weekday = 6;
        // switch语句实现选择
        switch (weekday) {
            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;
        }
    }

switch 语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。

3.2 case的穿透性

在switch语句中,如果case的后面不写break,将出现空透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

public static void main(String[] args) {
  int i = 5;
  switch (i){
    case 0:
      System.out.println("执行case0");
      break;
    case 5:
      System.out.println("执行case5");
    case 10:
      System.out.println("执行case10");
    default:
      System.out.println("执行default");
  }

上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接
运行完整体switch。
由于case存在穿透性,因此初学者在编写switch语句时,必须要写上break。

你可能感兴趣的:(java基础,java,编程语言)