四、《选择结构》( if / switch ) 的作用以及使用场景

前言

        if  、if...else(双条件选择)、在我们的开发当中会经常使用选择结构,但是具体的意思和作用是怎么样的,接下来我们就具体的了解它们的作用和用法了。

1、选择结构

概念:

选择结构就是让程序有选择的执行,满足条件就执行,不满足就不执行。根据判断的结果来控制程序的流程,是属于流程控制语句。其它两个流程控制语句是顺序结构(程序的执行是从左到右,从上到下)、循环结构(程序重复的干一件事)。

作用:

让程序有选择的执行。例如:用户登录的时候,只有用户名和密码都输入正确才能登录成功等。

1.1、if选择结构

1. if单条件语句

基本语法:

if(判断条件) {
    语句;
}

判断条件: 布尔类型的值或者表达式

执行语句:当条件满足时执行语句(可以是一条语句,也可以是一组语句)

代码案例:

public class _01If {
    public static void main(String[] args) {
	    // 需求1:需要让智能机器人自动充电,充电条件电量低于10
	    // 声明一个int类型的变量power表示电量,赋值9。
	    int power = 9;
	    if (power < 10) { // if条件判断,电量power < 10
	    	// 用一个打印语句表示,打印:主人,我没电了,请给我充电!
	    	System.out.println("主人,我没电了,请给我充电!");
	    }
    }
}

2. if ...else双条件语句

基本语法:

if(判断条件) {
    if语句;
} else {
    else语句;
}

判断条件: 布尔类型的值或者表达式

执行语句:当条件满足时执行 if 中的语句,不满足则执行 else 中的语句

代码案例:

public class _02If {
    public static void main(String[] args) {
    	// 需求2:智能机器人在充电条件电量低于10的时候,自动充电。不小于10,则提醒主人,一起玩耍!
	    // 声明一个int类型的变量power2表示电量,赋值11。
	    int power2 = 11;
    	if (power2 < 10) {// if条件判断,电量power2 < 10
	    	// 用一个打印语句表示,打印:主人,我没电了,请给我充电!
	    	System.out.println("主人,我没电了,请给我充电!");
	    } else {// else表示power 不小于 10
	    	// 用一个打印语句表示,打印:主人,我们一起耍一下!
	    	System.out.println("主人,我们一起耍一下!");
	    }
    }
}

3. if...else if 多条件语句

基本语法:

if(判断条件1) {
​	语句1;
} else if(判断条件2) {	
​	语句2;
} else if(判断条件3) {
​	语句3;
} ...
else {
 ​	else语句
}

判断条件: 布尔类型的值或者表达式

执行语句:按照从上到下顺序匹配条件,如果满足条件1,就执行语句1;如果满足条件2,就执行语句2;如果满足条件3,就执行语句3;

注意:只会执行一个满足的条件,哪怕下面有其它的满足条件的也不会执行了。所有条件都不满足就执行else语句中代码。

代码案例:

public class _03If {
    public static void main(String[] args) {
        /*
    	 *  需求3:智能机器人在充电条件电量低于10的时候,自动充电。
    	 *  power >= 10 并且< 60 提醒主人,一起看电视!
    	 *  power >= 60 并且< 80 提醒主人,实践检验一下!
    	 *  power >= 80 并且<= 100 提醒主人,我们来一点激烈的运动!
    	 */
    	// 声明一个int类型的变量power3表示电量,赋值69。
    	int power3 = 69;
    	if (power3 >= 0 &&power3 < 10) { // if条件判断,电量power3 < 10
    		// 用一个打印语句表示,打印:主人,我被玩没电了,请插我充电!
    		System.out.println("主人,我被玩没电了,请插我充电!");
    	} else if(power3 >= 10 && power3 < 60) { // 判断条件:power3 >= 10 && power3 < 60
    		// 用一个打印语句表示,打印:主人,一起看片,陶冶情操!
    		System.out.println("主人,一起看电视!");
    	} else if(power3 >= 60 && power3 < 80) { // 判断条件:power3 >= 60 && power3 < 80
    		// 用一个打印语句表示,打印:主人,实践检验一下!
    		System.out.println("主人,实践检验一下!");
    	} else if(power3 >= 80 && power3 <= 100) { // 判断条件:power3 >= 80 && power3 <= 100
    		// 用一个打印语句表示,打印:主人,我们来一点激烈的运动!
	    	System.out.println("主人,我们来一点激烈的运动!");
    	} else { // 所有条件都不满足会执行else
    		// 用一个打印语句表示,打印:主人,我坏了!
	    	System.out.println("主人,我坏了!");
    	}
    }
}

注意事项:

1. 选择结构是从上到下开始匹配,一旦匹配上一个条件后,整个条件语句就结束了,

哪怕后面也能匹配上条件也不会执行了 。

2. if 和 if else 语句,后面可以不写{},但是不建议,因为不写{} ,只能控制一行代码。

3. if(){} else if(){}后可以不写 else,一般根据业务需求决定。

代码案例:

public class _04If {
    public static void main(String[] args) {
    	/*
	     * 1. 选择结构是从上到下开始匹配,一旦匹配上一个条件后,整个条件语句就结束了,
	     *		哪怕后面也能匹配上条件也不会执行了
	     */
	    if (true) {
	    	System.out.println("if");
    	} else if (true) {
	    	System.out.println("else if - 1");
    	} else if (true) {
	    	System.out.println("else if - 2");
    	}
		
	    /*
	     * 2. if 和 if else 语句,后面可以不写{},但是不建议
	     *		因为不写{} ,只能控制一行代码
	     */
    	if (false) // 只能控制一行代码
	    	System.out.println("if true");
	    System.out.println("if true  后语句");
		
    	if (false) // 只能控制一行代码,并且if后不能再写其他代码,否则语法报错
    		System.out.println("if true");
    //	System.out.println("if true"); // 破坏了if else结构,报错
    	else // 只能控制一行代码
    		System.out.println("if true  后语句");
    		
    }
}

1.2、swtich 选择结构

大家先一起来看一个需求:

public class _01Switch {
    public static void main(String[] args) {
    	/*
    	 * 请设计一个一周工作计划
    	 * 	周一: 好好学习
    	 * 	周二:看视频学习
    	 * 	周三: 实践学习
	     * 	周四: 吃药补补身体!
    	 * 	周五: 爬山锻炼身体!
    	 * 	周六: 休息,给身体放个假
    	 * 	周日:总结一周所得! 
    	 */
    	// 声明一个int类型变量weekDay,表示一周中的某一天。赋值4
    	int weekDay = 4;
    	if (weekDay == 1) {// 判断weekDay是否==1
    		System.out.println("周一: 好好学习");
    	} else if (weekDay == 2) {// 判断weekDay是否==2
    		System.out.println("周二:看视频学习");
    	} else if (weekDay == 3) {// 判断weekDay是否==3
    		System.out.println("周三: 实践学习");
    	} else if (weekDay == 4) {// 判断weekDay是否==4
    		System.out.println("周四: 吃药补补身体!");
    	} else if (weekDay == 5) {// 判断weekDay是否==5
    		System.out.println("周五: 爬山锻炼身体!");
    	} else if (weekDay == 6) {// 判断weekDay是否==6
		System.out.println("周六: 休息,给身体放个假");
    	} else if (weekDay == 7) {// 判断weekDay是否==7
		System.out.println("周日:总结一周所得!");
    	} else {
    		System.out.println("出错了!");
    	}
    }
}

上面的需求我们可以根据学过的if结构实现,但是大家可以发现一个问题,现在上面的判断条件都是一些固定的值,并且代码可读性很差,我们有没有什么方式可以优化一下代码呢?

用switch结构

1.switch基本语法

声明变量

switch(变量){

        case 值1:

                功能语句1

                功能语句2...

                break;

        case 值2:

                功能语句1

                功能语句2...

                break;

        case 值3:

                功能语句1

                功能语句2...

                break;

        default:// 相当于条件语句中else,所有的case匹配不上执行default

                default语句

                break;

}

变量 :可以是局部变量或常量

switch中变量支持的数据类型:

byte/ short / int / char / String(JDK1.7) / 枚举类型(JDK1.5)

2.执行流程:

2.注意事项:

1. 每个case之间顺序可以交换,不影响代码运行。

2. default不一定放在末尾 在所有case失效的时候就会被执行到。

3. case中值与 key类型必须一致。

4. 最后一个break可以省略,但不建议。

5. break可以省略,但会导致后续case条件判断失效,按照从上到下顺序执行,直到找到第一个break跳出switch结构,如果没有找则执行到末尾后结束switch结构。

3、if、switch使用场景

只有比较固定的情况下,使用switch结构其他情况一律用 if 语句

switch不适应区间条件,只适用于一些条件比较固定的场景。例如:vip、星座、QQ状态、月份、礼拜、生肖、季节...

下一章《循环结构》

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,`if`和`switch`都是用于控制流程和进行条件判断的语句,但它们的使用场景不同。 一般来说,当你需要对一个表达式进行多个值的判断时,使用`switch`语句更方便。`switch`语句的结构比`if`语句更紧凑,可读性也更好。但是,`switch`语句只支持基本数据类型和枚举类型,而不支持引用类型。此外,`switch`语句只能使用常量表达式作为分支条件,而不能使用变量或表达式。 例如,下面的代码使用`switch`语句根据用户输入的数字打印相应的消息: ``` switch (number) { case 1: System.out.println("你输入了1"); break; case 2: System.out.println("你输入了2"); break; case 3: System.out.println("你输入了3"); break; default: System.out.println("你输入的数字不正确"); break; } ``` 相比之下,当你需要对一个表达式进行复杂的条件判断时,使用`if`语句更适合。`if`语句的结构更灵活,可以根据需要嵌套使用,可以使用任何表达式作为条件。 例如,下面的代码使用`if`语句判断一个数是否是质数: ``` if (number < 2) { System.out.println("不是质数"); } else { boolean isPrime = true; for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { isPrime = false; break; } } if (isPrime) { System.out.println("是质数"); } else { System.out.println("不是质数"); } } ``` 总之,选择`if`还是`switch`取决于你的具体需求和场景。如果你需要对一个表达式进行多个值的判断,使用`switch`语句更方便;如果你需要对一个表达式进行复杂的条件判断,使用`if`语句更适合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值