循环结构

  • while 循环
  • do...while 循环
  • for 循环
  • 在Java5中引入了一种主要用于数组的增强型for循环。

while循环

  • while是最基本的循环,它的结构为:
while(布尔表达式){
// 循环
}
  • 只要布尔表达式一直为true,就会一直执行下去。
  • 大多数情况下会让循环停止下来,我们需要一个让表达式失效的方式来结束循环。
  • 少部分情况需要循环一直执行,如服务器请求响应监听等。
  • 循环条件一直为true就是造成死循环,正常业务编程中要尽量避免死循环。否则会影响程序性能或者造成程序卡死崩溃。
//输出 1~100
int i = 0;
while(i<100){
  i++;
  System.out.println(i);
}

//计算 1+2+...+100
int i = 0;
int sum = 0;
while(i<100){
  i++;
  sum += i;
}
System.out.println(sum);

do...while循环

  • 对于while语句而言,如果不满足条件,则不能进入循环。
  • while是先判断条件然后再执行。
  • do...while先执行一次后判断是否满足条件。
do{
//代码语句
}while(布尔表达式);
// 计算 1+2+...+100
int i = 0;
int sum = 0;
do {
    i++;
    sum += i;
}while(i<100);
System.out.println(sum);

for循环

  • for循环的循环执行次数在执行前就确定的。
for(初始化;布尔表达式;更新){
// 代码语句
}

练习1:

// 计算0~100之间的奇数和、偶数和

public class Main {

    public static void main(String[] args) {
        int oddsum = 0;//存放奇数累计
        int evensum = 0;//存放偶数累计
        for (int i = 0; i <= 100; i++) {
            if (i % 2 == 0) {
                evensum += i;
            }else{
                oddsum += i;
            }
        }
        System.out.println("偶数和:"+evensum +" 奇数和:"+oddsum);
    }
}

练习2:

// 用while或for循环输出1-1000内能被5整除的数,并且每行输出3个

// while
public class Main {

    public static void main(String[] args) {
        String sum = "";//存放字符串
        int i = 0;
        int j = 0;
        while (i < 1000) {
            i++;
            if (i % 5 == 0) {
                j++;
                sum += i + " ";
                // 被3整除,换行
                if ( 3 == j) {
                    sum += "\n";
                    j = 0;
                }
            }
        }
        System.out.println(sum);
    }
}

// for
public class Main {

    public static void main(String[] args) {
        int j = 0;
        for (int i = 1; i <= 1000; i++){
            if (i % 5 == 0) {
                System.out.print(i + " ");
                j++;
                if(3 == j){
                    System.out.println(); //打印一个回车
                    j = 0;//复原,每3个一行
                }
            }
        }
    }
}

练习3:

public class Main {

    public static void main(String[] args) {
        //九九乘法表
        for(int i=1;i<10;i++){
            for (int j=1;j<i+1;j++){
                System.out.print(j +" * "+ i + " = " +(i*j)+"; ");
            }
            System.out.println();
        }
    }
}


增强for循环

  • 声明语句:声明新的局部变量,该变量的类型和数组元素的类型匹配。其作用域限定在循环语句块,其值与此事数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
for(声明语句:表达式){
// 代码句子
}
public class Main {

    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5, 6, 7};
        for (int x : numbers) {
            System.out.println(x);
        }
    }
}

break和continue

  • break在任何循环语句主体部分,均可以用break强制退出循环,不执行循环中剩余的语句,直接跳出循环。(break也在switch中使用)
  • continue语句用在循环语句中,用于终止某次的循环,跳出这次的未执行的语句,接着进行下一次循环。