Java中的循环结构共三种:代表语句:while ,do while ,for。
注意:
- for循环里面的各个表达式运行的顺序为:初始化表达式只读一次,判断循环条件表达式,条件为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止 ;
- while循环与for循环可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放(for循环一结束,此变量就立即消失)。而while循环使用的变量在循环结束后还可以继续使用;
- 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件来控制循环。
//无限循环的最简单表现形式
while(true){
}
for(;;){
}
举一个简单例子,运用for循环和定义变量体现一个“计数器思想”。就是在1~100之间找出7的倍数的个数?
/*
此程序中count变量的值体现了计数器思想。
通过一个变量记录住数据的状态变化,这也是通过循环完成的。
*/
int count=0;
for(int i=0;i<100;i++)
{
if(i%7==0)
{
count++;
}
}
System.out.println(count);
接下来利用for循环嵌套来打印由'*'构成的各种三角形和9*9乘法表。
/*
打印三角形状
*****
****
***
**
*
*/
for(int x=0;x<5;x++)
{
for(int y=x;y<5;y++)
{
System.out.print('*');
}
System.out.println();
}
/*
打印三角形状
*
**
***
****
*****
*/
for(int x=0;x<5;x++)
{
for(int y=0;y<=x;y++)
{
System.out.print('*');
}
System.out.println();
}
上面两个例子我们可以总结一个规律:外循环控制的是行数,内循环控制的是每一行的列数,也就是一行中元素的个数。
并且发现如果三角形的尖朝上,可以改变内循环中的循环条件,让循环条件随着外循环变化。
如果三角形的尖朝下,可以改变内循环的初始化值,让初始化值随着外循环变化。
接下来打印9*9乘法表:
//打印乘法表
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
两个特殊的流程控制语句:break(跳出)和continue(继续)
break语句:应用范围:选择结构和循环结构
continue语句:应用于循环结构
注意:
1)这两个语句离开应用范围,存在是没有意义的;
2)这个两个语句单独存在下面都不可以有语句,因为执行不到下面的语句;
3)continue语句是结束本次循环继续下次循环;
4)标号的出现,可以让这两个语句作用于指定的范围
p:for(int x=0;x<=3;x++)
{
q:for(int y=0;y<4;y++)
{
System.out.println("x="+x);
break p;
}
}
此时运行结果为:
因为break终止了外循环,两个循环都结束了。只输出了一条语句。
比较一下continue语句,其中对for循环使用了标号,可以让这两个语句作用于指定的范围:
p:for(int x=0;x<=3;x++)
{
q:for(int y=0;y<4;y++)
{
System.out.println("y="+y);
continue p;
}
}
输出结果是:
每次在执行continue语句时,跳出内循环(不管内循环是否执行完毕)继续执行外循环了。
从结果可以看出其实内循环没有一次执行完的。
让我们看一下外循环是否执行完了呢?
p:for(int x=0;x<=3;x++)
{
q:for(int y=0;y<4;y++)
{
System.out.println("x="+x);
continue p;
}
}
可以看到x的值累加了。