循环结构
Java中三种主要的循环结构
-
while
-
for
-
do...while
-
在Java5中引入了一种主要用于数组的增强型for循环
1.while循环
最基本的循环
while(flag) {
//循环内容
}
在循环刚开始时,会计算一次flag的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次判断是否为真。直到条件不成立,则循环结束。
通常会在循环内部,设置一个让循环结束的标志
int i = 1;
while(1 < 100){
System.out.println(i);
i++;
}
如果不清楚循环的次数,会在循环内加上if语句,当if条件满足时,执行 break
来跳出while循环
while (true){
//等待客户端连接
//定时检查
//......
if(flag)
break;
}
如果判断条件一直为true,或没有让循环停止的标志,这样就会造成无限循环也就是死循环。我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!
2.do...while循环
对于 while 语句而言,如果不满足条件,则不能进入循环。有时候需要即使不满足条件,也至少执行一次
do{
//循环内容
}while(flag)
表达式 flag
在循环体的后面,所以语句块在检测表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
While和do-While的区别:while先判断后执行。dowhile 是先执行后判断!
Do...while总是保证循环体会被至少执行一次!这是他们的主要差别。
3.for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
循环执行的次数是在执行前就确定的
for(初始化;布尔表达式;更新){
//循环内容
}
-
最先执行初始化步骤。可以声明一种类型,也可初始化一个或多个循环控制变量,也可以是空语句。
-
然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
-
执行一次循环后,更新循环控制变量,迭代因子控制循环变量的增减。
-
再次检测布尔表达式。循环执行上面的过程。
for(int i=0; i<=100; i++){
System.out.println(i);
}//从1输出到100
//i++控制了循环次数
//计算0到100之间的奇数和偶数的和
int oddSum = 0;
int evenSum = 0;
for(int i=0; i<=100; i++){
if(i % 2 != 0){
oddSum = oddSum + i;
}else{
evenSum = evenSum + i;
}
System.out.println("奇数的和:" + oddSum);
System.out.println("偶数的和:" + evenSum);
}
4.增强for循环
主要用于数组或集合的 for 循环
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句 块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
int[] arr = {1,2,3,4,5,6,7,8,9,0};
for(int i: arr){
System.out.print(" " + i);
}
String[] strArr = {"Tom", "Lay", "Lamm"};
for(String str : strArr){
System.out.print(" " + str);
}