循环结构:
在选择结构中代码无法一直跑,我们运行一遍程序就停止了,它可以用Scanner等待阻止,但是它终究会停止。这在真实的环境中肯定不行。比如你去访问一个网站阿里,淘宝,他们肯定24小时,甚至全年无休止的跑,我们需要规定一个程序运行多少次,运行多久。所以说,按照我们编程是用来解决人的问题的思想,我们需要一个结构来搞定这个事情,于是循环结构就诞生了。
顺序结构的程序它只能被执行一次,但是如果你想让它相同的操作执行多次怎么办?那就使用循环结构就对了,Java中主要有三种循环。
While循环,do...while循环,for循环,
而且在Java5中引入了一中主要用于数组的增强for循环。
用于遍历一些数组和对象。
While循环:
while是最基本的循环,它的结构为:
while (布尔表达式){
//循环内容
}
只要布尔表达式为true,循环就会一直执行下去。
我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。
少部分情况需要循环一直进行,比如服务器的请求响应监听等。
循环条件一直为true就会造成无限循环【死循环】,我们正常业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃!
1 package com.duan.struct; 2 3 public class WhileDemo01 { 4 public static void main(String[] args) { 5 6 //输出1~100 7 int i = 0; 8 9 while (i<100){ 10 i++; 11 System.out.println(i); 12 } 13 14 } 15 } 16 结果: 17 1 18 2 19 3 20 ... 21 100
1 package com.duan.struct; 2 3 public class WhileDemo02 { 4 public static void main(String[] args) { 5 //死循环,在正常业务编辑中应该避免使用死循环、否则会影响程序的一些性能,或者让咱们的程序崩溃、或者卡死 6 while (true) { 7 //如果等一个人聊天,你会永远等待他,永远监听他是否聊天。所以说等待客户端连接这样的情况下, 8 //你的QQ永远都在监听着,要等待别人要给你发信息,当然它不是这样实现的。 9 //还有一些定时检查的任务,像闹钟比如说,每多少小时它要叫一次...这样它就要去不停的循环,除了硬件上的损坏,它都在走。 10 //这个叫做while true,它是死循环。因为这个程序它停止不了。至少目前看起来没代码能让他停下来。 11 } 12 13 } 14 }
思考:计算1+2+3+...100=?
1 package com.duan.struct; 2 3 public class WhileDemo03 { 4 public static void main(String[] args) { 5 //计算1+2+3+...+100=? 6 7 int i = 0; 8 int sum = 0; 9 10 while (i <= 100) { 11 sum = sum + i; 12 i++; 13 } 14 15 System.out.println(sum); 16 17 } 18 } 19 20 结果: 21 5050
do...while循环:
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do...while循环和while循环相似,不同的是,do...whlie循环至少会执行一次。
do{
//代码语句
}while (布尔表达式);
1 package com.duan.struct; 2 3 public class DoWhileDemo01 { 4 5 public static void main(String[] args) { 6 //计算1+2+3+...+100=? 7 8 int i = 0; 9 int sum = 0; 10 11 do{ 12 sum = sum + i; 13 i++; 14 } while (i <= 100); 15 16 System.out.println(sum); 17 } 18 } 19 20 结果: 21 5050
1 package com.duan.struct; 2 3 public class DoWhileDemo02 { 4 5 public static void main(String[] args) { 6 int a = 0; 7 while (a < 0) { 8 System.out.println(a); 9 a++; 10 } 11 System.out.println("============="); 12 do { 13 System.out.println(a); 14 a++; 15 } while (a < 0); 16 } 17 } 18 结果: 19 ============= 20 0
while和do...while的区别:
while先判断后执行。do while是先执行后判断。
do...while总是能保证循环体会被至少执行一次。