Java中for循环中执行顺序问题及break, continue用法

本文详细解析了Java中for循环的工作原理及其控制语句的使用技巧,包括如何利用break和continue结合标签来控制多层循环的流程,以及不同情况下循环变量更新的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. for循环的一个问题

Java代码

for(int i=1, j=i+10 ; i<5; i++ , j=i*2)  

System.out.println("i="+i+" j="+j); 

 

for(int i=1, j=i+10 ; i<5; i++ , j=i*2)

System.out.println("i="+i+" j="+j);

 

运行结果:

i=1 j=11

i=2 j=4

i=3 j=6

i=4 j=8

 

而改动一点后:

Java代码

for(int i=1, j=i+10; i<5; i++){  

j=i*2;  

System.out.println("i="+i+" j="+j);  

} 

 

for(int i=1, j=i+10; i<5; i++){

j=i*2;

System.out.println("i="+i+" j="+j);

}

 

结果又为:

i=1 j=2

i=2 j=4

i=3 j=6

i=4 j=8

 

经网上求助后发现,原因在于:for循环在执行条件测试后,先执行程序部分,再只是步进。

 

2. break continue 加标签用法

Java语句里,唯一能放标签的地方是在循环语句前面。而且循环语句跟标签之间不能有任何东西。

Java代码

label1:  

outer-iteration {  

  inner-iteration {  

      //...  

      break; // 1  

      //...  

      continue; // 2  

      //...  

      continue label1; // 3  

      //...  

      break label1; // 4  

   }  

} 

 

label1:

outer-iteration {

  inner-iteration {

      //...

      break; // 1

      //...

      continue; // 2

      //...

      continue label1; // 3

      //...

      break label1; // 4

   }

}

 

案例1会中断内部循环。2会中断内部当前循环,直接跳入下一轮循环。案例3中断内部和外部循环,跳到label1,从外部开头重新开始循环。案例4跳到label1,且不在进入循环。

 

下面举例:

 

Java代码

public class LabeledFor {  

  static Test monitor = new Test();  

  public static void main(String[] args) {  

      int i = 0;  

      outer: // Can't have statements here  

      for(; true ;) { // infinite loop  

           inner: // Can't have statements here  

           for(; i < 10; i++) {  

                System.out.println("i = " + i);  

                if(i == 2) {  

                    System.out.println("continue");  

                    continue;  

                }  

                if(i == 3) {  

                    System.out.println("break");  

                    i++; // Otherwise i never  

                          // gets incremented.  

                    break;  

                }  

                if(i == 7) {  

                    System.out.println("continue outer");  

                    i++; // Otherwise i never  

                           // gets incremented.  

                    continue outer;  

                }  

                if(i == 8) {  

                    System.out.println("break outer");  

                    break outer;  

                }  

 

                for(int k = 0; k < 5; k++) {  

                    if(k == 3) {  

                         System.out.println("continue inner");  

                         continue inner;  

                    }  

                }  

           }  

      }  

  }  

} ///:~  

 

结果: 

 

public class LabeledFor {

  static Test monitor = new Test();

  public static void main(String[] args) {

      int i = 0;

      outer: // Can't have statements here

      for(; true ;) { // infinite loop

           inner: // Can't have statements here

           for(; i < 10; i++) {

                System.out.println("i = " + i);

                if(i == 2) {

                    System.out.println("continue");

                    continue;

                }

                if(i == 3) {

                    System.out.println("break");

                    i++; // Otherwise i never

                          // gets incremented.

                    break;

                }

                if(i == 7) {

                    System.out.println("continue outer");

                    i++; // Otherwise i never

                           // gets incremented.

                    continue outer;

                }

                if(i == 8) {

                    System.out.println("break outer");

                    break outer;

                }

 

                for(int k = 0; k < 5; k++) {

                    if(k == 3) {

                         System.out.println("continue inner");

                         continue inner;

                    }

                }

           }

      }

  }

} ///:~

 

结果:

"i = 0",

"continue inner",

"i = 1",

"continue inner",

"i = 2",

"continue",

"i = 3",

"break",

"i = 4",

"continue inner",

"i = 5",

"continue inner",

"i = 6",

"continue inner",

"i = 7",

"continue outer",

"i = 8",

"break outer"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值