流程控制&循环结构

流程

程序的流程即就是代码的执行顺序。 分为循环判断两个方面。
例如:

class Demo 
{
	public static void main(String[] args) 
	{
		int a = 3 ;
		int b = 5 ;
		int sum ;
		sum = a + b;
		System.out.println("sum="+sum);
	}
}

上述代码当在dos命令行中写入java Demo
回车之后,首先会启动JVM,JVM就会去加载当前Demo这个class文件,并执行其中的main方法。当程序执行main方法的时候会从第一行开始往下执行,直到整个代码全部执行完成。在此过程中程序按照书写的顺序,不会跳过任何一行代码。像这样的执行流程就是常见的顺序执行结构

判断结构

1、if语句

第一种格式
if(条件表达式)
 { 
 执行语句;
 }
第二种格式
if(条件表达式)
 {
 执行语句;
 }
 else
 {
 执行语句;
 }
第三种格式:
if(条件表达式)
 { 
 执行语句;
 }
 else if (条件表达式)
 { 
 执行语句;
 }
 …… else
 { 
 执行语句;
 }


代码演示:

class IfTest 
{
	public static void main(String[] args) 
	{
		//1,定义变量。记录数据。
		int week = 9;
		//2,通过判断结构语句if对该变量进行判断。
		if(week == 1)		
			//3,根据不同的条件,通过输出语句显示不同的结果。
			System.out.println(week+"对应的是星期一");		
		else if(week == 2)		
			System.out.println(week+"对应的是星期二");		
		else if(week == 3)
			System.out.println(week+"对应的是星期三");		
		else if(week == 4)		
			System.out.println(week+"对应的是星期四");		
		else if(week == 5)		
			System.out.println(week+"对应的是星期五");		
		else if(week == 6)		
			System.out.println(week+"对应的是星期六");		
		else if(week == 7)
			System.out.println(week+"对应的是星期日");
		else
			System.out.println(week+"没有对应的星期");
	}
}

多分支结构(switch)

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

程序执行时,遇到switch关键字,首先会计算表达式的值,然后根据计算的值和case后面的值做比较,当case后面的值和switch表达式的值相同时,就执行case身后的所有语句,若case身后没有和switch表达式匹配的值,程序就会执行default后面的语句。
switch语句选择的类型只有四种:byte,short,int , char。(java5之前)。还支持 enum(jdk5), String(jdk7);
经典实例代码:

public class Score {
    public static void main(String[] args) {
        int res = 76;
        switch(res/10){
            case 10:
            case 9:
                System.out.println("成绩为: A");
                break;
            case 8:
                System.out.println("成绩为: B");
                break;
            case 7:
                System.out.println("成绩为: C");
                break;
            case 6:
                System.out.println("成绩为: D");
                break;
            default:
                System.out.println("成绩为: E");
                break;
        }
    }
}
if和switch的区别

if可以用于判断数值,也可以判断区间,只要运算结果是boolean类型,都可以进行判断。

switch用于对固定的几个值,进行判断。判断的值的类型有限。

循环结构(while&do-while)

1、循环结构

根据程序的需求,可以将某些代码重复执行的操作。Java中的循环结构有如下三种:

  • while:事先不需要知道循环执行多少次;
  • do-while:同上,只是至少要执行一次(先做,后判断);
  • for:需要知道循环次数;
while循环
while(条件表达式)
{
	执行语句;
}

while执行顺序:当程序遇到while关键字时,JVM首先会运算while后面的条件表达式,当条件表达式为true时,就会执行while后面大括号中的语句,当把大括号中的所有语句执行完之后,会又回到while的条件表达式处再次判断,若还为true,就继续执行大括号中的语句,若为false就跳过大括号中的所有语句,继续往下执行。

示例:

public class Add{
	public Static void main(String[] args){
		int i = 1;
		int sum = 0;//2,需要循环结构。
		while(i<=10){    //3,循环中需要进行和+下一个数的运算。并让下一个数自增。
		    sum = sum + i;    
		    i++;
		    }
		System.out.println("sum="+sum);
	}
}

注意事项

  1. while循环的括号中的表达式计算结果必须为boolean类型的值。
  2. while循环的括号中不能直接写false常量。
  3. while循环的括号后面不要写分号,循环控制的语句的代码用大括号扩起来。
  4. while循环控制的条件变量一定要更新,保证循环能够正常结束.
do-while循环
do{    
  		执行语句;
  	}while(条件表达式);

while和do-while对比 用代码说明问题:

int x = 3; 
		while(x<3)
		{
			System.out.println("x="+x);
			x++;
		}
System.out.printin("===============================")
int y = 3;
		do
		{
			System.out.println("y="+y);
			y++;
		}while (y<3);

while先判断条件再循环;
do-while是无论条件是否满足,循环体至少执行一次。

循环结构(for)

1、for循环格式

for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))
{
      执行语句;(4)
}

for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
编号表示:1》》》2》》》4》》》3·········2(当判断结果false时)。
代码举例:

class ForTest 
{
	public static void main(String[] args) 
	{		
		//1,定义变量,记录个数。
		int count = 0;
		for (int x = 1; x<=100 ; x++ )
		{
			//对数值进行判断,是否是6的倍数。
			if(x % 6 == 0)
				count++;
		}
		System.out.println("count="+count);
	}
}

for和while的区别:while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用

嵌套循环

练习代码:

class ForForTest 
{
	public static void main(String[] args) 
	{
		for (int x=1; x<=5 ; x++)
		{
			for (int y=1 ;y<=x ;y++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

流程控制(continue,break)

1、break语句、continue语句

break:终止该层循环;

continue:跳过该次循环

举例:

//break是终止循环,即在程序中遇到break,那么break所属的循环将结束。
		for (int x=0; x<3 ;x++ )
		{
			if(x==1)
				break;
			System.out.println("x="+x);			
		}
//continue是结束本次循环,继续下次循环。循环是不会结束的。
		for (int x=0; x<10 ;x++ )
		{
			if(x%2==0)
				continue;
			System.out.println("x="+x);
			
		}

2、使用循环标签

outer:for (int x=0; x<3 ;x++ )
{
	inner:for (int y=0; y<4 ;y++ )
    {
         System.out.println("x="+x);
         break outer;
     }
}
  System.out.println("========================================");
outer:for (int x=0; x<3 ;x++ )
{
        inner:for (int y=0; y<4 ;y++ )
        {
               System.out.println("x="+x);
			   continue outer;
        }
}