Day03——Java基础——顺序流程控制语句、分支流程控制语句(if else switch case default )

Java流程控制语句

在java中所有程序的执行都基于流程控制语句
Java流程控制语句分类:
1、顺序流程控制语句
程序执行由上至下由左至右 按条执行
一条java语句的结束由;决定
在每一条语句书写结束后必须以;结束
2、选择流程控制语句
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
(1)单分支
当代码顺序执行至分支语句进行逻辑判断 判断布尔表达式中返回的值 为true则执行相应语句块的代码
语法: if(布尔表达式){语句块}
Day03——Java基础——顺序流程控制语句、分支流程控制语句(if else switch case default )_第1张图片
(2)双分支
当代码顺序执行至分支语句进行逻辑判断 根据返回的值true执行语句块1 false执行语句2
语法:if(布尔表达式){语句块1}else{语句块2}
Day03——Java基础——顺序流程控制语句、分支流程控制语句(if else switch case default )_第2张图片
(3)多分支
当代码顺序执行至分支语句进行逻辑判断 根据返回的值true执行语句块1 false 继续判断布尔表达式2 返回true执行语句2 否则继续判断。。。。。。。
语法:if(布尔表达式1){语句块1}else if(布尔表达式2){语句块2}…else{语句块3}
3、循环流程控制语句
Day03——Java基础——顺序流程控制语句、分支流程控制语句(if else switch case default )_第3张图片
三目运算符可以转化为流程控制语句,但是流程控制语句不一定可以转化为三目运算符,因为运算符运算需要返回结果。
三目运算符与流程控制语句区别:
运行效率:再涉及到运算操作时三目运算符效率略高,但如果只是进行true false判断进行结果的执行 流程控制语句效率高(三目运算符是运算必须返回结果后才能使用)
语法:三目运算符语法上相比if简单但是如果涉及到复杂判断三目运算符难以理解

switch case分支语句
与if eclse分支语句不同的是 switch是通过数据匹配的形式进行分支操作
switch语句语法:
switch(变量) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break;
}
程序运行过程中为相应变量动态赋值,在case中对具体值与变量值进行数据匹配,匹配通过执行相应的语句体 否则若全部匹配项匹配失败执行default中的语句体 break执行完当前语句体后直接退出匹配
Day03——Java基础——顺序流程控制语句、分支流程控制语句(if else switch case default )_第4张图片相当于每次case用变量与case指定的值进行==判断如果返回true 执行相应case下语句块
break理解:执行代码块后结束其他匹配操作(结束其他switch中代码的运行)
Switch代码的执行与case无关,代码块的执行取决于boolean类型中间变量默认为false;
当case代码匹配之后将boolean值改为true ,当执行到相应可执行代码块,进行判断,判断boolean类型的值为true则执行代码块 否则不执行(只有case匹配时会将boolean类型的值赋值为true )

If与switch使用场景
当进行大范围的数据判断操作使用if
当进行指定数据并且数据较少的时候使用switch

注意事项
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以省略吗?
可以省略。一般不建议。除非判断的值是固定的。(单选题)
break可以省略吗?
可以省略,一般不建议。否则结果可能不是你想要的
default的位置一定要在最后吗?
可以出现在switch语句任意位置。
switch语句的结束条件
遇到break
执行到程序的末尾

练习:

// 输入日输出当前已过天数 还剩天数
		int sumDay = 0;// 保存已过天数
		int TwoMonthDay = 28;// 二月天数
		int yearDay=365;
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			TwoMonthDay = 29;
			yearDay=366;
		}
		switch (month-1) {
		case 11:
			sumDay += 30;
		case 10:
			sumDay += 31;
		case 9:
			sumDay += 30;
		case 8:
			sumDay += 31;
		case 7:
			sumDay += 31;
		case 6:
			sumDay += 30;
		case 5:
			sumDay += 31;
		case 4:
			sumDay += 30;
		case 3:
			sumDay += 31;
		case 2:
			sumDay += TwoMonthDay;
		case 1:
			sumDay += 31;
		default:
			sumDay += day;
			break;
		}
		System.out.println("已过"+sumDay+"天");
		System.out.println("还剩"+(yearDay-sumDay)+"天");

Scanner扫描器类

// Scanner扫描器类
		Scanner sc = new Scanner(System.in);
		// 数据类型 变量名 =new 数据类型(参数)
		// 声明一个名为sc的扫描器对象
		// 创建一个新的扫描器对象扫描控制台输入的内容并赋值给名为sc的变量
		// String name = sc.nextLine();
		// String字符串类 用于保存字符串
		// sc.nextLine()获取下一行输入内容并返回
		// System.out.println(name+"你好帅");
		// scanner程序员前期进行数据输入的工具类
		// 使用控制台模拟数据交互功能
		// 使用scanner模拟用户登录功能
		System.out.println("请输入账号");
		String username = sc.nextLine();
		System.out.println("请输入密码");
		String password = sc.nextLine();

		if (username.equals("admin") && password.equals("admin")) {
			System.out.println("登录成功");
		} else {
			System.out.println("登录失败");
		}

Random随机数类

	// import导入 导入其他包中的类 并进行使用
		Random r = new Random();
		//随机数类
		//创建随机数对象
		
		//在现实世界中不存在真正的随机数 
		//伪随机数-》通过计算或公式生成的数
		
		int number = r.nextInt(10);//随机生成一个整数[0~10)之间的整数
	//	System.out.println(number);
		//随机生成七选三     
		int a=r.nextInt(7)+1;
		int b=r.nextInt(7)+1;
		int c=r.nextInt(7)+1;
		System.out.println("你选择的号码为:"+a+b+c);

你可能感兴趣的:(学习Java第一阶段)