程序流程控制:
程序流程控制的结构有:
l 判断结构
l 选择结构
l 循环结构
l If switch do while while for
l 这些语句什么时候用?
l 1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。
l 但是建议使用switch,效率相对较高。
l switch(变量){
l case 值:要执行的语句;break;
l …
l default:要执行的语句;
l }
l 工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
l 就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
l 细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
l 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
l 3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
l 2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
l 3)、当某些语句需要执行很多次时,就用循环结构。
l while和for可以进行互换。
l 区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
判断结构:
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是否是true或者 false;
代码示例:
public classTestIf
{
public static void main(String[] args)
{
//若age <= 6时,打印出"没上学"
//若age <= 12时,打印出"上小学"
//若age <= 15时,打印出"上初中"
//若age <= 18时,打印出"上高中"
//若age <= 22时,打印出"上大学"
//若都不满足,则打印出"大学已毕业"
int age = 99;
if (age <= 6)
{
System.out.println("没上学");
}
else if (age <= 12)
{
System.out.println("上小学");
}
else if (age <= 15)
{
System.out.println("上初中");
}
else if (age <= 18)
{
System.out.println("上高中");
}
else if (age <= 22)
{
System.out.println("上大学");
}
else
{
System.out.println("大学已毕业");
}
}
}
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int, char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
代码示例:
public classTestSwitch
{
public static void main(String [] args)
{
int i = 1;
switch (i)
{
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
default:
System.out.println("default");
break;
}
}
}
循环结构:
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
注:
a,for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
b,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
c,最简单无限循环格式:while(true), for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
代码示例:
For语句:
public classForTest
{
public static void main(String[] args)
{
int x = 1;
int y = 1;
for(System.out.println("a");x < 3; System.out.println("c"), y++)//for括号里多条执行语句用 “,”隔开
{
System.out.println("d");
x++;
System.out.println("y="+y);
}
//执行结果adcdc
/* 无限循环的最简单表现形式。
* for(;;){}
*
* while(){true}
* */
}
}
For循环的嵌套示例:
public classForForDemo
{
public static void main(String[] args)
{
for(int x = 0; x < 3; x ++)
{
for(int y = 0; y < 4; y++)
{
System.out.print("ok");
}
System.out.println();//换行功能
}
System.out.println("_______________________");
/* 对于打印矩形:外循环控制行数,内循环控制每一行的列数,也就是每一行元素的个数。
* */
/*
*****
****
***
**
*
发现图形有很多行,每一行有很多列。
要使用嵌套循环。原理:形象说法:大圈套小圈。
尖朝上,可以改变条件语句,让条件随着外循环变化。
尖朝下,可以改变初始化值,让初始化值随着外循环变化。
*/
for(int x = 0; x < 10;x++)//x<5:因为外循环控制行数,一共5行。
{
for(int y = 0; y < x; y++)
{
System.out.print("*");
}
System.out.println();
}
}
}
While和do while语句:
public classWhileDemo
{
public static void main(String[] args)
{
/*定义初始化表达式;
* while(条件表达式)
* {
* 循环体(执行语句);
* }
* */
int x = 1;
while(x <= 100)
{
System.out.println("x="+x);
x += 2;
}
int y = 1;
do
{
System.out.println("y="+y);
y++;
}
while(y <= 100);
/*while:先判断条件,只有条件满足才执行循环体。
* do while:先执行循环体,在判断条件,条件满足,再继续执行循环体。
* 简单一句话:do while:无论条件是否满足,循环体至少执行一次。
* */
}
}
其他流程控制语句:
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
注:
a,这两个语句离开应用范围,存在是没有意义的。
b,这个两个语句单独存在下面都不可以有语句,因为执行不到。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围。
代码示例:
public classOtherDemo
{
public static void main(String[] args)
{
//break; 语句
w:for(int x = 0 ; x < 3; x++)
{
for(int y = 0; y < 4; y++)
{
System.out.println("x="+x);
break w;
}
}
System.out.println("------------------------------------------------------------------");
//continue; 只能作用于循环结构.继续循环,结束本次循环,继续下一次循环。
for(int x = 1; x <= 10; x++)
{
if(x % 2 == 1)
continue;
System.out.println("x="+x);
}
System.out.println("------------------------------------------------------------------");
w:for(int x = 0 ; x < 3; x++)
{
for(int y = 0; y < 4; y++)
{
System.out.println("x="+x);
continue w;
}
/* 记住:
* 1.break和continue语句的作用范围。
* 2.break和continue单独存在时,下面不可以有任何语句,因为都执行不到。
* */
}
}
}