(JavaSE)五、控制结构---选择结构

选择结构

    顾名思义,有选择执行的控制结构,由条件来决定程序的执行顺序,即程序按照顺序结构执行到分支语句时,通过判断条件,来决定往那条分支继续执行。

    举个例子,“如果今天是周一,晚饭吃米饭,周二吃大饼,周三吃面条.......”,很显然这种情况顺序结构是无法执行的,这时候就需要一些条件来进行判断,通过判断条件来判断的语句,我们成为选择语句或分支语句

选择结构通常分为两类:

    if语句:

        if 语句是通过boolean表达式或者boolean值作为选择条件,可以理解成 “如果....,就........”

      第一种结构

                            if (  boolean 表达式  )  {

                                        条件的执行体;

                            }

             if后的{ } 表示了一个整体的代码块,如果 boolean 表达式的值为true,就执行这一代码块。  

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int a = 2;
		int b = 1;
		if (a > b) {
			System.out.println("a更大");
		}
		if (a < b) {
			System.out.println("b 更大");
		}
	}
}

分析:a = 2,b = 1;条件判断中a > b成立,所以执行了第一句话。a < b不成立,所以第二句话不执行。

        第二种结构:

                                if (  boolean 表达式  ) {

                                          条件执行体A

                                }else{

                                          条件执行体B

                                }

            表示 boolean 表达式如果成立,进入条件执行体A,如果不成立,进入条件执行体B。

            翻译过来就相当于:“如果...,就.....;否则就.......”

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int a = 100;
		int b = 20;
		if (a < b) {
			System.out.println("a更大");
		}else {
			System.out.println("b 更大");
		}
	}
}

分析: 条件判断 a < b,a = 100、b = 20,明显不成立,所以执行 else(否则)后的执行体。

        第三种结构:

                             if (  boolean 表达式  ) {

                                          条件执行体A;

                                }else if( boolean 表达式  ){

                                          条件执行体B;

                                }else{

                                          条件执行体C;

                                }

          这就相当于有了多种选择的条件,先判断第一个boolean表达式,如果不成立,判断第二个,以此类推。如果所有的boolean表达式均不成立,执行 else 的代码块。

现在做一下我们刚刚说的一周每天吃什么的问题。

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int weekday = 4;     //初始化一个天数,假设是4
		if (weekday == 1) {			//== 表示对只进行判断
			System.out.println("今晚吃米饭");
		}else if(weekday == 2){
			System.out.println("今晚吃大饼");
		}else if(weekday == 3){
			System.out.println("今晚吃面条");
		}else if(weekday == 4){
			System.out.println("今晚吃海鲜");
		}else if(weekday == 5){
			System.out.println("今晚吃烤肉");
		}else if(weekday == 6){
			System.out.println("今晚吃火锅");
		}else{
                        //上述条件都为 false,执行此代码块
                        System.out.println("今晚喝粥");
		}
	}
}

分析:首先定义了weekday = 4,首先判断 weekday是否 等等于 1 ,不成立,可进行第二个判断,判断是否等等于 2 ,以此类推,最终判断出 weekday == 4;执行其中的语句。

使用 if 语句时应注意:

        (1)不能在 if ( boolean 表达式) 后使用分号。

        (2)不能在 else if ( boolean 表达式) 后使用分号。

        (3)不能直接使用else if语句,必须先使用 if 语句

        (4)第三种结构中的 else 语句,表示所有条件都不成立的情况下才执行。

                                            


    switch语句:

            语句结构:    

                         switch (  整型表达式  ) {

                                       case A值 :

                                                       执行的语句;

                                                        break;

                                       case B值 :

                                                       执行的语句;

                                                        break;

                                       case C值 :

                                                       执行的语句;

                                                        break;

                                               。。。

                                       default:

                                                        执行的语句;

                                }

            注意:switch 后的括号中是一个整型表达式,不是判断语句,相当于的传一个值进如表达式中,然后将  这个值与 所有case 进行匹配,如果匹配成功,执行其中的代码。最后的default,是如果全部都匹配失败,执行此处的代码。break 表示跳出switch执结构体,后面我们会讲到。

举个例子,判断这一天是周几

package Test;
/**
 * 
 * @author FYDragon
 *
 */
public class TestDemo {
	public static void main(String[] args) {
		int weekday = 4;     //初始化一个天数,假设是4
		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;

		default:
			System.out.println("今天是周日");
			break;
		}
	}
}
分析一下:首先将weekday传入switch结构体中,进行逐个匹配,第一个case不等于 4,第二个case不等于 4,第三个case不等于4,第四个匹配成功。执行其中的语句。

                                            

结果:

                        


    switch使用时需注意

            (1)switch语句适用于对多个整型值进行匹配判断,从而实现条件的分支语句

            (2)和 if 语句不同是因为根据boolean表达式进行判断,而switch相当于是根于“表达式 == 数值”的boolean表达式进行判断,所以实质上,if 表达式更强大。

          (3)switch语句选择的基本数据类型只有四种:byte、short、char、int ,没有long。

             (4)case只是用来为switch选择一个执行代码的入口,如果一旦进入某个入口之后,后面的case实际上已经失去了判断意义。

            (5)default表示所有的case值都不正确,一般放在switch的最后,也不需要使用break语句。


    if 和 switch 的选择:

                如果是对整数表达式判断等于多少,首选用switch。其他情况首选 if 语句。







猜你喜欢

转载自blog.csdn.net/FYDragonFYL/article/details/80885512