黑马程序员 Java基础<三> 控制流程

--------- android培训java培训、期待与您交流! ----------

 要想控制程序的执行顺序,就离不开控制流程结构。下面总结下java中的控制流程结构吧。

一、判断结构

        if语句

             if:语句用于做判断使用。常对某个范围进行判断,或者几个变量进行判断,还有boolean表达式的判断
            if语句有三种格式

           1、格式一

/**
 * if第一种格式:
 * if(条件表达式)
 * {
 *     执行语句;
 * }
 * 执行流程:如果条件表达式为true,就执行执行语句,否则,什么都不执行。 
 */
class Temp{
	public static void main(String[] args){
		int x = 2;
		if (x > 1){
			System.out.println("执行语句");
		}
		
		//if语句的括号可以省略 为了阅读性不要省略
		if ( x > 1)
			if ( x < 2)	
				System.out.println("2");
		System.out.println("1");
		// if和执行语句是一个整体 第一个if和下面的if语句是一个整体 
	}
}

            2、格式二

/**
 * if第二种格式:
 * if(条件表达式)
 * {
 *     执行语句;
 * }
 * else 
 * {
 *    执行语句;
 * }
 * 执行流程:如果条件表达式为true,就执行执行语句;否则,就执行else语句 
 */
class Temp{
	public static void main(String[] args){
		int x = 1,b;
		if (x>1){
			b = 100;
		}
		else{
			b = 200;
		}
		System.out.println(b);
		// 上面可简写为三元运算
		   b = (x>1)? 100:200;
		//区别:三元运算符必须要有结果,if else语句可以不需要
	}
	
}

            3、格式三

/**
 * if第三种格式也叫if嵌套
 * if(条件表达式)
 * {
 *      执行语句;
 * }
 * else if(条件表式)
 * {
 * 	执行语句;
 * }
 * ……
 * else
 * {
 * 	执行语句;
 * }
 * 执行流程:如果条件表达式为true,就执行if语句,程序结束;
 *           否则,就执行else if 条件判断为true,就执行语句;
 *           如果都为false,就执行最后的elas的执行语句。
 * 注意:这种多条件判断只有一个执行结果。 
 */
class Temp{
	public static void main(String[] args){
		/*
		 *一年有四季
		 *春:3,4,5
		 *夏:6,7,8
		 *秋:9,10,11
		 *冬:12,1,2
		 * 根据用户输入月份判断季节
		 */
		int month = 7;
		if ( month<1 && month>12 ){
			System.out.println(month+"月没有对应季节");
		}
		if ( month>=3 && month<=5 ){
			System.out.println(month+"月是春季");
		}
		else if ( month>=6 && month<=8){
			System.out.println(month+"月是夏季");
		}
		else if ( month>=9 && month<=11 ){
			System.out.println(month+"月是秋季");
		}
		else 
			System.out.println(month+"月是冬季");
	}

}

        注意事项

              1、什么时候用哪一种if语句?
                 格式1在判断条件为一种情况下使用
                 格式2在判断条件为两种情况下使用
                 格式3在判断条件为多种情况下使用
             
              2、大括号需要每次都写吗?
                 如果if或者else里面控制的语句题是一条语句,就可以省略
                 如果是多条控制语句,就必须写上大括号。为了阅读性建议写大括号
              
              3、if后不加分号
                 if (false);
                   {                 
                      Syste.out.println("java");  
                    }   

二、选择结构

     switch语句

         switch语句用做选择使用。用于几个常量的判断。
        switch语句会把几个常量值直接加载到内存,在判断时候,效率比if语句高。
           所以在对几个常量的判断一般选择switch语句。
class Temp{
	public static void main(String[] args){
		int x = 2,y=3;
		switch(x)    // x=2
		{           
			default: // 没有一个满足就执行, 后面顺序执行
				y++;  // y=4
			case 3:   //第一个执行语句     
				y++;  // y=5
				break;
			case 4:
				y++;  
		}
		System.out.println("y="+y);//y=6
		//switch里面的执行语句是无序的但执行时有序的
		//先判断case 在执行default;直到遇到break程序就结束,
		//否则程序顺序执行而不判断case,直到遇到右大括号"}"程序结束。
		
	}
}

      注意事项

            1、default整体可以省略吗?
                 可以,但不建议
           2、defalut的位置可以放到前面吗?
                 可以,但不建议
           3、break可以省略吗?
                 可以,但不建议.default的break可以省略但结果可能会有问题。
           4、switch语句什么时候结束?
                 遇到break或者遇到大括号

       if和switch的区别

          if:
           1、对具体的值进行判断
           2、对区间判断
           3、对运算结果是boolean类型的表达式进行判断
          switch:
           1、对具体的值进行判断
           2、值得个数通常是固定的
           3、几个常量值直接加载到内存,在判断时候,效率相对比if语句高
  
             

三、循环结构

           循环就是重复的对一段代码进行操作。java的循环语句有 while,do while, for

       while循环 

/*
* while语句格式:
* while(条件表达式)
* {
*     循环执行体;
* }
* 执行流程:判断条件表达式为true就执行循环体
*          直到条件为false就结束循环
* 
* 注意的是 循环要有出口,否则就是死循环。    
*/
class Temp{
	public static void main(String[] args){
		// 求1加到100的和
		int i = 1,s = 0 ;
		while (i<=100){
			s =+ i;
			i++;
		}
		System.out.println(s);
		
	}
}

      do while循环

/**
 *do while 语句
 *do
 *{
 *   循环执行体;
 *}while(条件表达式);
 *执行流程: 先执行循环体,在判断条件。如果为true继续循环直到为false循环结束。
 */
class Temp{
	public static void main(String[] args){
		// 求1加到100的和
		int i = 1,s = 0 ;
		do{
			s =+ i ;
			i++;
		}while(i<=100);
		System.out.println(s);
		
		//do while 的特点是无论条件是否满足循环体至少执行一次
		do{
			System.out.println("执行一次");
		}while(false);
	}
}

   for循环    

/**
 *for格式
 *for (初始化表达式;循环条件表达式;循环后的操作表达式)
 *{
 *    循环执行体;
 *}
 *注:1、for里面表达式运算的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体
 *       然后再执行循环后的的操作表达式,接着继续判断循环条件,重复上个过程,直到条件不满足。
 *    2、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放了
 *       而while循环使用的变量在循环结束后还可以继续使用。
 *       所以在循环体外要使用循环变量是用while 或 do while
 *          不使用就用for 
 *    3、最简单的无限循环格式 while(true) for(;;);无限循环存在的原因是并不知道循环多少次,
 *       而是根据某些条件,来控制循环。         
 */
class Temp{
	public static void main(String[] args){
		// 求1加到100的和
		int s = 0;
		for (int i=1; i<=100; i++){
			s += i ;
		}
		System.out.println(s);
		
		// 面试题 特殊for循环
		int x = 1;
		for (System.out.println("a"),System.out.println("b");x<3; System.out.println("c")){
			System.out.println("d");
			x++;
		}
		
	}
}

    注意:在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要。
         循环通常情况下,需要定义条件, 需要控制次数。

四、循环思想

       累加思想


/*
练习:
获取1到10 10个数字的和。

0 + 1
1 + 2
   3 + 3
	 6 + 4
	    10 + 5
思路:
1,每次参与加法的数值不确定。
2,每次的出现的和数据也不确定。
3,发现参与加法运算的数值有递增规律。
4,每一次都是加法运算在重复,并且都是和再加上下一个数值。

步骤:
1,定义一个变量,记录住参与加法运算的数据。
2,定义一个变量,记录中每一次的出现的和。
3,对于记录参与加法运算的数据进行自增。
4,因为加法运算需要重复,就要想到循环结构。
*/
class Temp{
	public static void main(String[] args){
		
		int x = 1;//记录参与加法的数据。
		int sum = 0;//记录住每一次的和。
		while(x<=100)
		{
			sum = sum + x;
			
			x++;
		}

		System.out.println("sum="+sum);
	  
	}
}

      计数器思想

/*
1~100之间 6的倍数出现的次数。
*/

class Temp{
	public static void main(String[] args){
		int x = 1;
		int count = 0;  //记录每次满足条件个数
		while(x<=100)
		{
			if(x%6==0)
				count++;//满足条件加1
			x++;
		}

		System.out.println("count="+count);
	}
}

      大圈套小圈思想

/*
打印下面图形
*****
*****
*****
*****

 */
class Temp{
	public static void main(String[] args){
		for(int x=0; x<4; x++)//外循环控制的是行数
		{
			for(int y=0; y<5; y++)//内循环控制的是每一行的个数 
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}

}

五、其他控制流程语句break 和 continue

     break(跳出),contionue(继续)
    break语句:应用范围:选择结构和循环结构
    continue语句:应用与循环结构.
    :a、这两个语句离开应用范围,存在没有意义的。
       b、这两个语句单独存在下面都不可以有语句,应为执行不到。
       c、continue语句是结束本次循环继续下次循环
       d、标号的出现,可以让着两个语句作用于指定范围。
class Temp{
	public static void main(String[] args){
		/*
		break:跳出。
		break作用的范围:要么是switch语句,要么是循环语句。
		记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到。
			break跳出所在的当前循环。
			如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成。
			*/
		for (int x=0; x<3; x++){
			for (int y=0; y<4; y++){
				System.out.println("x="+x);
				break;//跳出y++ 执行不到
			}
		}
		//若想条出外循环着要加标号
		a:for (int x=0; x<3; x++){
			b:for (int y=0; y<4; y++){
				System.out.println("x="+x);
				break a;//跳出程序结束 x=0
			}
		}
		
	   /*
		continue:继续。
		作用的范围:循环结构。
		continue:结束本次循环,继续下次循环。
		如果continue单独存在时,下面不要有任何语句,因为执行不到。
	    */
		for(int x=0;x<4;x++){
			if(x%2==0) //条件满足跳出本次循环
				continue;
			System.out.println("x="+x);//打印不满足的
		}
		//continue跳出标号
		a:for (int x=0; x<3; x++){
			b:for (int y=0; y<4; y++){
				System.out.println("x="+x);//打印x=0,1,2
				continue a;
			}
		}
	}     
}		
     
--------- android培训java培训、期待与您交流! ----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值