一、while死循环
package introduction5; public class WhileDemo { public static void main(String[] args) { int i = 10; //“死循环” //1、永远满足该条件 while(i<21) { System.out.println(i); }
//如果运行此程序,命令会一直执行方式一并循环,永远无法运行下面的代码 //2、直接将结果写在条件中 while(true) { System.out.println(i); } } }
结果:
一直循环打印“10”
注意:这里仅仅是演示死循环的两种方式,如果在此段代码中把方式一写在方式二后面,在eclipse中未运行编译前就会报错,因为方式二中条件永远为true,无法像方式一中一样能够改变条件变量的值,所以如果按照如下方式放置代码,eclipse会提示“Unreachable code”(代码不可达);
二、关键字:
break:如果满足某一个条件,就结束整个while循环,不再执行该循环。
package introduction5; public class WhileDemo { public static void main(String[] args) { int i = 10; while(i<20) { if(i==17) { break; } System.out.println(i); /*i++表示下一次循环时加+,效果等同于“i+1”, *打印时第一次结果为“10”, *第二次为“11”, *直到打印出“20”后循环停止。 */ i++; } System.out.println("循环外...."); } }
结果为:
continue:如果满足某一个条件,只结束本次满足该条件的循环,继续下一轮的循环。
package introduction5; public class WhileDemo { public static void main(String[] args) { int i = 10; while(i<20) { if(i==17) { continue; } System.out.println(i); /*i++表示下一次循环时加+,效果等同于“i+1”, *打印时第一次结果为“10”, *第二次为“11”, *直到打印出“20”后循环停止。 */ i++; } System.out.println("循环外...."); } }
结果:
注意:使用continue后,图片标识处一直处于红色状态(红色表正在执行命令,灰色标识命令执行完成),后面的打印语句“循环外。。。。”也一直没有打印,说明程序一直处于执行中无法真正结束,出现这种情况主要是因为当程序循环到“i=17”时,跳过了while后面打印“i”的命令,重新进入了下一轮循环,然后判断“i<20”是否成立,成立后继续比较“i==17”,该条件成立后又继续跳过打印“i”的命令,继续进入了下一轮的循环当中,然后一直处于判断“i==17”的循环中,这样导致while循环外的打印语句“循环外。。。”也一直无法执行,最终导致了程序一直处于运行中无法结束,相当与已经进入了死循环。
如果我们把打印“i”的语句放到if判断语句前面则不会出现这种情况:
package introduction5; public class WhileDemo { public static void main(String[] args) { int i = 10; while(i<20) { System.out.println(i); /*i++表示下一次循环时加+,效果等同于“i+1”, *打印时第一次结果为“10”, *第二次为“11”, *直到打印出“20”后循环停止。 */ i++; if(i==17) { continue; } } System.out.println("循环外...."); } }
结果为:
可能有些人会疑问,为什么这里打印了17?
当循环到16时,打印了16,然后i++将i变成了17,变为17后进行if判断,条件成立,continue跳出本次循环,继续进入下一次循环,然后判断i是否小于20(i这个时候值还未自增,仍为17),成立后将i打印带控制台(显示命令执行结果的地方),然后在执行i++自增为18,所以这里会打印17这个值。
三、do-while:与while不同的地方在于判断条件前会先执行一次循环(while先检查条件后执行语句)。
package introduction5; public class WhileDemo { public static void main(String[] args) { int i = 10; do { System.out.println(i); i++; }while(i<20); } }
打印的结果为:
现在我们将“i”的值改为20:
打印结果为:
由此可见,do-while循环无论条件是否成立都会执行一次,判断成立则继续执行下一轮,否则直接结束。