java基础(三)、流程控制分支结构


版权申明


java语法的语句结构

Java语言是一种面向对象的编程语言,类是Java代码的基本创建方式,所有代码都将位于类定义中。

代码中有三种常见类型的语句:顺序结构语句、选择结构语句和循环结构语句

顺序结构

 顺序结构就是指程序按照语句的先后顺序一条一条地执行。使用这种结构只需要将合法语句按照合理的执行顺序排列好,即可逐一执行;
什么叫顺序执行呢?简单地来说就是从上往下,逐一执行,直到结束;我们先来看一个栗子?:

public class Test03 {
	public static void main(String[] args) {
		System.out.println("我希望有个如你一般的人");
		System.out.println("如山间清爽的风");
		System.out.println("如古城温暖的光");
		System.out.println("从清晨到夜晚");
		System.out.println("由山野到书房");
		System.out.println("只要最后是你就好");
	}
}

//执行结果
我希望有个如你一般的人
如山间清爽的风
如古城温暖的光
从清晨到夜晚
由山野到书房
只要最后是你就好

通过栗子我们可以看出,代码是一条一条的往下顺序执行的,这就是我们的顺序结构;是不是觉得很简单呢,那就对了;接下来我们看下一个有趣的语法结构;

选择结构

选择结构也叫分支结构,根据判断条件来选择执行的分支。
通俗的来讲就是根据需要来选择执行哪块程序;而不满足的也就是我们暂时不需要的部分代码就暂时不起作用了,这就是我们要了解的选择结构;
 那我们常用的分支结构主要有if…else、switch…case:

单分支if()…else

通过if后的关系表达式进行判断,通常是一个二选一的分支,而条件表达式的结果是一个布尔值,要么为true,要么为false;
语法:

if(条件表达式){
	//满足条件的执行
}else{
	//不满足的条件执行
  }
public class Test03 {
	public static void main(String[] args) {
		int a=3;
		int b=4;
		if(a<b) {
			System.out.println("正确");
		}else {
			System.out.println("如果显示这句话,说明它反人类");
		}
	}
}
//输出结果:正确
多分支

如果有多个分支即多种情况,可以使用多个分支进行判断处理
语法:

if(判断条件1){
	满足判断条件1时执行的代码块;
}else  if(判断条件2){
	满足判断条件2时执行语句;
}else if(判断条件3){
	满足判断条件3时执行语句;
}else{

}

实例:

public class Test03 {
	public static void main(String[] args) {
		// 根据的成绩,进行评级,根据学生考试成绩划分ABCDF。
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入你的成绩:");
		int score = scan.nextInt();
		if (score <= 100 && score >= 0) {
			if (score >= 0 && score < 60) {
				System.out.println("F");
			} else if (score >= 60 && score < 70) {
				System.out.println("D");
			} else if (score >= 70 && score < 80) {
				System.out.println("C");
			} else if (score >= 80 && score < 90) {
				System.out.println("B");
			} else if (score >= 90 && score <= 100) {
				System.out.println("A");
			}
		} else {
			System.out.println("请输入0-100之间的数");
		}
		scan.close();
	}
}

运行结果根据输入的值进行不同的选择去执行;这就是分支结构;当然,在以后的开发过程中,if分支结构用的很多,这就属于个人的业务逻辑范畴啦;在这里我是用到了if…else的嵌套,实际上在开发过程中,多重嵌套是完全有可能的,所以各位童鞋看到了这里,就要多多练习分支语句的使用哦;

switch…case

switch…case提供多路分支,用于选择也就是switch后面的表达式的数据类型可以是整数、Char、枚举类型、String;主要用于多选一的分支;语法:

switch(表达式) {
	case 取值1:
		执行语句;
		breakcase  取值2:
		执行语句;
		break......
	default:
		执行语句;
		break}

**执行流程:**先计算表达式的值,再去和case后面的取值匹配,如果匹配成功则执行所匹配的分支那一部分代码;如果没有匹配到,则执行default控制的语句;
switch语句的特点:

  • switch选择的类型支持数值,如:byte、short、int、char
  • case与default的执行顺序:先去判断所有的case,如果没有匹配的值,则执行default语句;
  • switch语句的停止条件是遇到了break关键字或者switch语句的结束大括号
  • 如果匹配的case或者default没有对应的break,那么程序会继续向下执行语句,直到遇到break或者switch结尾结束
  • switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能跟变量
  • case一般都要和break搭配使用,没有特别的需求的话最好不要省略,不然会出现case穿透;
    那如何用switch…case分支语句呢?我们看一下下面这个简单的栗子:
int i = 0;
switch (i) {
	case 1:
		System.out.println("Case 1");
		break;
	case 2:
		System.out.println("Case 2");
		break;
	default:
		System.out.println("默认处理");
		break;
//执行结果
		/*
		* 默认处理
		* 表达式没有匹配到对应的case,所以执行了default里面的语句
		* /
}

char 类型在switch 中的使用,实现加减乘除四则运算;

public static void main(String[] args) {
	int x = 3, y = 4;
	char c = '*';
	switch (c) {
	case '+':
		System.out.println("x+y=" + (x + y));
		break;
	case '-':
		System.out.println("x-y="+(x-y));
		break;
	case '*':
		System.out.println("x*y="+(x*y));
		break;
	case '/':
		System.out.println("x/y="+(x/y));
		break;
	default:
		System.out.println("算术符号错误");	
		break;	
}
/*
*执行结果:x*y=12
*/

而我们知道,如果case后面不加上break的话会造成case穿透,但是某些时候我们可以合理的利用这个case穿透,例如:判断某个月份为什么季节,我们都知道一年12个月分为四个季节,那么我们就可以使用case穿透来实现这个功能;

public class Test{
	public static void main(String[] args) {
	int x = 3;
	switch (x) {
		case 2:
		case 3:
		case 4:
			System.out.println("spring");
			break;
		case 5:
		case 6:
		case 7:
			System.out.println("sunmer");
			break;
		case 8:
		case 9:
		case 10:
			System.out.println("autumn");
			break;
		case 11:
		case 12:
		case 1:
			System.out.println("winter");
		default:
			System.out.println("ok");
			break;
		}
	}
}

switch和if的比较

看起来switch和if有些相似,那么我们在具体情况应该如何判断使用哪个呢?

  • 如果判断的具体数值不多,而是符号byte、short、int、char四种类型,虽然2个语句都可以使用,建议使用switch语句,因为效率稍高
  • 对区间或范围的判断,使用if。if的使用范围更广,除了能判断具体数值还能判断区间。switch 判断区间会很费劲的,根据情况的不同要写不同数量的case,稍微麻烦;作为程序员,能简洁的就肯定会简洁一点啦;
  • 对结果为boolean类型的判断,使用if。switch 是不能实现的;
  • 在JDK5中对switch增加了对枚举的判断,JDK7中增加对switch字符串判断;

最后

写这篇文章的时间稍微长了点,主要是学习压力太大啦!哈哈,9号就在起草了,终于趁着今天休息把它补全了;如果有不准确的地方,希望大家多多指正啦!
大家早点休息!晚安!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值