1、循环语句
循环语句就是在满足一定条件的情况下反复执行某一个操作。 在Java中提供了3种常用的的循环语句,分别是while循环语句、do...while循环语句和for循环语句。
(1)while 循环语句
while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。语法如下:
while(条件表达式)
{
执行语句
}
当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。while 循环语句的执行过程如图所示。
【实例】在项目中创建Test01类,在主方法中通过while循环将整数1~10相加,并将结果输出。
public class Test01 {
public static void main(String args[]) {
int x=1;
int sum=0;
while(x<=10) {
sum=sum+x;
x++;
}
System.out.println("sum="+sum);
}
}
运行结果如图所示:
(2)do...while循环语句
do...while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立再执行循环体,而do...while循环语句则先执行一次循环后,再判断条件是否成立。也就是说,do...while循环语句中“{ }”中的程序段至少要被执行一次。
do
{
执行语句
}
while(条件表达式);
do...while语句与while语句的一个明显区别是,do...while语句在结尾处多了一个分号(;),其执行过程如图:
(3)for循环语句
for循环是Java程序设计中最有用的循环语句之一,一个for循环可以用来重复执行某条语句,直到某个条件得到满足。
①for语句
语法如下:
for(表达式1;表达式2;表达式3)
{
语句序列
}
表达式1:初始化表达式,负责完成变量的初始化。
表达式2:循环条件表达式,值为boolean型的表达式,指定循环条件。
表达式3:循环后操作表达式,负责修整变量,改变循环条件。
在执行for循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一个表达式。这样一轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2返回 true,则继续循环,否则跳出整个 for 语句。
【实例】在项目中创建Test02类,在主方法中使用for循环来计算1~100之间所有偶数之和。
public class Test02 {
public static void main(String args[]) {
int sum=0;
for(int i=0;i<=100;i+=2) {
sum=sum+i;
}
System.out.println("1~100之间的所有偶数之和为:"+sum);
}
}
运行结果如图所示:
在编程时,有时会使用for循环的特殊语法格式来实现无限循环。对于这种无限循环,可以通过break语句跳出循环。
②foreach语句
foreach 语句是 for 语句的特殊简化版本,不能完全取代for语句,但任何foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称为foreach 语句。foreach语句在遍历数组等方面为程序员提供了很大的方便。
语法如下:
for(元素变量x;遍历对象obj){//不必对元素变量x进行初始化。
引用了x的java语句;
}
【实例】在项目中创建Test03类,在主方法中定义一维数组,并用foreach语句遍历该数组。
public class Test03 {
public static void main(String args[]) {
int arr[]= {4,6,2};
System.out.println("一维数组中的元素分别为:");
for(int x:arr) {
//foreach语句,int x引用的变量,arr指定要循环遍历的数组,最后将x输出
System.out.println(x);
}
}
}
运行结果如图所示:
2、循环控制语句
(1)break语句
使用break 语句可以跳出switch结构。在循环结构中,同样也可用break语句跳出当前循环体,从而中断当前循环。
在3种循环语句中使用break语句的形式如下:
while(...)
{
...
break;
...
}
do
{
...
break;
...
}while(...);
for
{
...
break;
...
}
【实例】使用break跳出循环
public class Test04 {
public static void main(String[] args) {
for(int i=0;i<=100;i++) {
System.out.println(i);
if(i==5) {
break;
}
}
System.out.println("----end----");
}
}
运行结果如图所示:
如果想让break跳出外层循环,Java提供了“标签”的功能,语法如下:
标签名:循环体{
break标签名;
}
标签名:任意标识符。
循环体:任意循环语句;
break标签名:break跳出指定的循环体,此循环体的标签名必须与break的标签名一致。
带有标签的break 可以指定跳出的循环,这个循环可以是内层循环,也可以是外层循环。
【实例】用带有标签的break跳出外层循环。
public class Test05 {
public static void main(String[] args) {
Loop:for(int i=0;i<3;i++) {
for(int j=0;j<6;j++) {
if(j==4) {
break Loop;
}
System.out.println("i="+i+"j="+j);
}
}
}
}
运行结果如图所示:
(2)continue语句
continue语句是针对break语句的补充。continue不是立即跳出循环体,而是跳出本次循环结束前的语句,回到循环的条件测试部分,重新开始执行行循环。在 for 循环语句中遇到 continue 后,首先执行循环的增量部分,然后进行条件测试。在while和do…while 循环中,continue语句使控制直接回到条件测试部分。
在3种循环语句中,使用continue语句的形式如下:
while(...)
{
...
continue;
...
}
do
{
...
continue;
...
}while(...);
for
{
...
continue;
...
}
【实例】输出1~20之间的奇数,使用continue跳出循环。
public class Test06 {
public static void main(String[] args) {
for(int i=1;i<20;i++) {
if(i%2==0) {
continue;
}
System.out.println(i);
}
}
}
运行结果如图所示:
与break语句一样,continue也支持标签功能,语法如下:
标签名:循环体{
continue标签名;
}
标签名:任意标识符。
循环体:任意循环语句。
continue标签名:continue跳出指定的循环体,此循环体的标签名必须与continue的标签名一致。