CoreJava 分支结构

day3 分支结构

一、扫描仪与导包语句

  1. 扫描仪(Scanner)

    扫描仪:可以在控制台接收用户输入的数据,以回车键结束输入,扫描仪开启之后可以重复使用,直至主动关闭

    1. 开启扫描仪

      java.util.Scanner sc = new java.util.Scanner(System.in);
      
    2. 数据的接收

      从控制台接收数据的时候,不同的数据类型使用不同的方法:

      int i = sc.nextInt();
      double d = sc.nextDouble();
      String s = sc.next();
      char c = sc.next().charAt(0);
      
    3. 关闭扫描仪

      关闭的语句可以省略,代码运行结束自动关闭

      sc.close();
      
  2. 导包语句(import)

    1. 语法:
      1. 导入某个指定类:import 包名.类名;
      2. 导入某个包中所有的类:import 包名.*;
    2. 声明的位置:在package语句之下,class声明之上,可以写入多行import语句
    3. 注意事项:
      1. 允许使用*号一次导入该包下所有的类,但是不建议使用
      2. *号只会导入当前包下所有的类,不会导入子包中的类
      3. 号不允许连用,即 import java.util..*; 这样的语句是错的
      4. *号可能会引起指向不明确
      5. java.lang包作为基础包会被默认导入,不需要导包
    package day3;
    
    import java.util.Scanner;//导入指定类
    import java.util.Date;//导入指定类
    import java.sql.*;//导入java.sql包下所有的类
    
    public class Test {
    	public static void main(String[] args) {
    		
    	}
    }
    

二、if分支结构

  1. if分支结构

    1. 语法结构:

      if(布尔表达式){

      ​ //代码
      }

    2. 执行顺序:先执行if中的布尔表达式,如果结果为true则进入代码区域执行代码,执行结束之后继续执行if结构之后的代码;如果结果为false则跳过代码区域,直接执行之后的代码。

    package day3;
    
    public class TestIf {
    	public static void main(String[] args) {
    		int a = 3;
    		if(a == 3){//判断结果为true,进入if结构
    			System.out.println("a的值为3");//此行会执行
    		}
    		if(a != 3){//判断结果为false,跳过if结构
    			System.out.println("a的值不为3");
    		}
            //继续执行代码
    		System.out.println("代码运行结束");
    	}
    }
    
  2. if...else结构

    1. 语法结构:

      if(布尔表达式){

      ​ //代码一
      }else{

      ​ //代码二

      }

    2. 执行顺序:先执行if中的布尔表达式,如果结果为true则进入if之后的代码区域执行代码,执行结束之后继续执行if..else结构之后的代码;如果结果为false则进入else之后的代码区域执行代码,执行结束之后继续执行if..else之后的代码

      package day3;
      
      public class TestIfElse {
      	public static void main(String[] args) {
      		int a = 3;
      		if (a == 3) {
      			System.out.println("a的值为3");
      		} else {
      			System.out.println("a的值不为3");
      		}
      		System.out.println("代码运行结束");
      	}
      }
      
  3. if...else if..else..结构

    1. 语法结构:

      if(布尔表达式一){

      ​ //代码一
      }else if(布尔表达式二){

      ​ //代码二

      }else{

      ​ //代码三

      }

    public class TestIf {
    	public static void main(String[] args) {
    		int a = 5;
    		if(a % 2 == 0){
    			System.out.println("a是偶数");
    		}else if(a % 2 != 0){
    			System.out.println("a是奇数");
    		}else{
    			System.out.println("我也不知道怎么会有这样的数");
    		}
    	}
    }
    

    ​ b.执行顺序:

    1. 先判断布尔表达式一的结果,如果表达式的的结果为true则执代码一,代码一执行结束之后直接跳出if结构,不再判断之后的表达式
    2. 如果布尔表达式一的结果为false,那么向下查询,去判断下一个布尔表达式,即布尔表达式二的结果,如果结果为true,则执行代码二,代码二执行结束之后直接跳出if结构。否则的话继续向下。
    3. 不断重复上述执行,直至所有表达式都判断结束,结果全为false的时候,进入else代码块,执行完成后会结束if结构
  4. if嵌套

    1. 语法结构

      if(布尔表达式一){
      	if(布尔表达式二){
      //代码二
      	}else{
      //代码三
      	}
      }else{
      	//代码三
      }
      
      public class TestIf {
	public static void main(String[] args) {
      		int a = 5;
      		if (a <= 7 && a >= 1) {
      			if (a <= 5 && a >= 1) {
      				System.out.println("工作日");
      			}else{
      				System.out.println("双休");
      			}
      		}else{
      			System.out.println("上帝没创造出星期八");
      		}
      	}
      }

  1. 执行顺序:

    1. 参照if结构,先判断布尔表达式一的结果,如果为true,则进入代码块
      2. 进入代码块之后,判断内层if结构的结果,参照if结构的执行顺序

三、switch分支

  1. 语法:

    switch(表达式){

    ​ case 值1:代码块1;
    ​ case 值2:代码块2;
    ​ case 值3:代码块3;

    }

    注意:表达式的结果的数据类型必须是byte,short,int,char类型,JDK1.7之后支持String类型

  2. case穿透:当匹配某个结果时,会向下运行之后所有的代码,而不是只执行其后的一段代码,这种现象叫做case穿透

  3. break关键字:在switch结构中,使用break关键字,可以结束代码的运行,从而跳出switch结构,防止出现case穿透

  4. default:当没有结果正确被匹配时,可以使用default来给switch结构一个默认的匹配结果。default的匹配时机:仅当所有结果都不匹配的时候才使用default之后的代码,这与default声明的位置无关。当default位于最后的时候,其后的break可以省略,但是不建议省略。

  5. 当不同的值需要匹配相同的代码时,可以省略上方case之后的代码,利用case穿透简化代码

public class TestSwitch {
	public static void main(String[] args) {
		int i = 3;
		switch (i) {
		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;
		}
	}
}

四、局部变量

  1. 概念:局部变量是定义在函数内部的变量
  2. 特点:
    1. 局部变量在声明之后,必须先赋值,然后才可以使用
    2. 局部变量的有效范围:从其声明的位置开始,到其所在作用域结束
    3. 局部变量的命名要求:在重合的作用域内,局部变量不可以重名
posted on 2020-11-30 00:30  blueskylabor  阅读(87)  评论(0)    收藏  举报