|
|
|
| Java中for循环中执行顺序问题及break, continue用法 |
| 作者:未知 |
| 日期:2005-07-19 |
| 人气: |
| 投稿:(转贴) |
| 来源:未知 |
| 字体:大 中 小 |
| 收藏:加入浏览器收藏 |
|
|
|
最近在机子上装了jdk1.4.2,装了编辑器Eclipse3.0.1,用后感觉Eclipse确实很好用,特别是参数提示功能。 网上的java资源也还不少,看了《thinking in java》中文版前几章,记点问题与发现在这里: 1. for循环的一个问题 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
而改动一点后: 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语句里,唯一能放标签的地方是在循环语句前面。而且循环语句跟标签之间不能有任何东西。 label1: outer-iteration { inner-iteration { //... break; // 1 //... continue; // 2 //... continue label1; // 3 //... break label1; // 4 } }
案例1会中断内部循环。2会中断内部当前循环,直接跳入下一轮循环。案例3中断内部和外部循环,跳到label1,从外部开头重新开始循环。案例4跳到label1,且不在进入循环。
下面举例:
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"
|
|
|