循环结构

while循环

  • while循环是最基本的循环,它结构为:

    while (布尔表达式) {
        //循环内容
    }
    
  • 只要布尔表达式为 true ,循环就会一直执行下去。

  • 我们大多数情况是会让循环停止下来的,所以需要一个让表达式失效的方式来结束循环。

  • 少部分情况需要一直执行循环,比如服务器的请求响应监听等等。

  • 循环条件一直为 true 就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃!

  • 思考:计算1+2+...+100=?

do...while循环

  • 对于 while 语句而言,如果不满足条件,则不能进入循环。但有的时候我们需要即使不满足条件也至少执行一次

  • do...while 循环和 while 循环相似,不同的是,do...while 循环至少会执行一次

  • 语法结构:

    do {
        //循环内容
    }while(布尔表达式);
    
  • while 和 do...while 的区别:

    • while 先判断后执行;do..while 是先执行后判断!
    • do...while 总是保证循环体至少被执行一次!这是他们的主要差别。

for循环

  • 虽然所有循环结构都可以用 while 和 do...while 表示,但是 Java 提供了另一种语句 ——for 循环 ,是一些循环节欧冠变得更简单。

  • for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

  • for循环执行的次数实在执行迁就确定的。语法格式:

    for (初始化;布尔表达式;更新) {
        //循环内容
    }
    
  • 练习1:计算0到100之间的奇数和与偶数和。

  • 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个。

  • 练习3:打印九九乘法表。

    1. 练习1
    package com.wanggenji.struct;
    
    public class ForDemo01 {
        public static void main(String[] args) {
            //计算1—100的奇数和与偶数和
    
            int oddSum = 0;
            int evenSum = 0;
            //初始化值      //判断条件  //迭代
            for (int i = 1; i <= 100; i++) {
                if (i%2==0) { //偶数和
                    evenSum = evenSum + i;
                }else{  //奇数和
                    oddSum = oddSum + i;
                }
            }
            System.out.println("偶数和为:"+evenSum);
            System.out.println("奇数和为:"+oddSum);
    
            /*
            * 关于 for 循环有以下几点说明:
            *
            * 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
            * 然后,检测布尔表达式的值,如果为 true ,循环体被执行,如果为 false ,终止循环,开始执行循环体后面的语句。
            * 执行一次循环后,更新循环控制变量,(迭代因子控制循环变量的增减)。
            * 再次检测布尔表达式,循环上面的过程
    
            * */
            //死循环
            for ( ; ; ) {
    
            }
        }
    }
    
    1. 练习2
    package com.wanggenji.struct;
    
    public class ForDemo02 {
        public static void main(String[] args) {
            //练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个。
    
            for (int i = 1; i <= 1000 ; i++) {
                if (i%5==0) {
                    System.out.print(i+"\t");
                }
                if (i%(5*3)==0) {
                    System.out.println();
                }
            }
    
            //println 输出会换行
            //print  输出不会换行
        }
    }
    
    1. 练习3
    package com.wanggenji.struct;
    
    public class ForDemo03 {
        public static void main(String[] args) {
            //练习3:打印九九乘法表。
    
            //先打印第一列
            //固定的1列再用 一个循环包起来
            //去掉重复项 j<=i
            //调整样式
            for (int i = 1; i <= 9 ; i++) {
                for (int j = 1; j <= i ; j++) {
                    System.out.print(j+"*"+i+"="+(i*j)+"\t");
                }
                System.out.print("\n");
            }
    
        }
    }
    

增强for循环

  • 做个了解,之后数组再重点使用

  • JDK 5 引入了一种主要用于数组集合的增强型 for 循环

  • 语法格式:

    for (声明语句:表达式) 
    {
    	//循环体   
    }
    
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

package com.wanggenji.struct;

public class ForDemo04 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};//定义了一个数组

        //遍历数组的元素
        for (int x:numbers) { //针对数组和集合的简化 for 循环
            System.out.println(x);
        }
        System.out.println("===========");
        //直接 for 循环遍历数组的元素
        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
        }
    }
}