流程控制&循环结构
流程
程序的流程即就是代码的执行顺序。 分为循环
和判断
两个方面。
例如:
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);
}
}
注意事项
- while循环的括号中的表达式计算结果必须为boolean类型的值。
- while循环的括号中不能直接写false常量。
- while循环的括号后面不要写分号,循环控制的语句的代码用大括号扩起来。
- 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;
}
}