第四章 控制执行流程
1、java不准许将一个数字作为布尔值。
2、区分break和continue
- continue跳过一次循环,break跳出整个循环
- continue跳到循环顶部的行为会使得i值递增,break从循环块外的下一句开始执行,不会有i值递增
实例:
public class BreakAndContiniue { public static void main(String[] args) { int i; for(i = 0; i < 10; i++) { if(i == 9) break; } System.out.println("break_i = " + i); for(i = 0; i < 10; i++) { if(i == 9) continue; } System.out.println("continue_i = " + i); } }
结果:break_i = 9
continue_i = 10
- 带标签continue会跳到,标签所属循环顶部开始下一次循环;但是,break会直接跳出标签所属循环
实例:
public class BreakAndContinue2 { public static void main(String[] args) { // TODO Auto-generated method stub int count = 0; lable1: for(int i = 0; i<10; i++) { for(int j = 0; j < 10; j++) { if(j==4) continue lable1; count++; } } System.out.println("continue_count = " + count); count = 0; lable2: for(int i = 0; i<10; i++) { for(int j = 0; j < 10; j++) { if(j==4) break lable2; count++; } } System.out.println("break_count = " + count); } }
结果:continue_count = 40
break_count = 4
3.switch语句的难点在于default的理解;
注意: 如果case语句匹配成功,但是没有break;条件不管会不会和后面的case语句匹配,都会继续执行后面的case语句一直到遇到break或整个switch执行完
把default理解成是通配符就可以。
看一下笔者编写的代码示例:
public class Switch { public static void main(String[] args) { // TODO Auto-generated method stub switch (1) { case 1: System.out.println("This is 1"); case 2: System.out.println("This is 2"); default: System.out.println("This is default"); case 3: System.out.println("This is 3"); break; case 4: System.out.println("This is 4"); } } }
结果:
代码直到遇到break;才结束
稍微改动代码,让我们来看看default的效果:
public class Switch { public static void main(String[] args) { // TODO Auto-generated method stub switch (1) { default: System.out.println("This is default"); case 3: System.out.println("This is 3"); break; case 4: System.out.println("This is 4"); } } }
结果:
没有报错,default是通配符可以匹配1。