Java基础【之】循环、流程控制 (if else、whitch case、while、do while、for...i、foreach、多层循环与退出)

1.默认顺序执行

  • 代码逻辑,默认从入口函数进入,从上到下依次执行,然后程序退出

    public static void main(String[] args) {
        // 默认从上到下执行
        // hello
        // whats your name
        // 999
        //
        int a = 999;
        hello();
        whatsYourName();
        System.out.println(a);
    }

    public static void hello() {
        System.out.println(" hello ");
    }

    public static void whatsYourName() {
        System.out.println(" whats your name");
    }

2.分支控制

if else

  • 通过判断后,指定对应逻辑区域(如果、否则、否则…)
  • if else ,经过判断逻辑后,只会进入其中某一块代码区域
    if(){} else{}
    if(){} else if(){} else{}
    形式1:单一判断,if else
    形式2:多层判断,最终流到 else 逻辑
    形式3:多层判断,没有流到 else 逻辑

    public static void main(String[] args) {
        int a = 999;

        //if else ,经过判断逻辑后,只会进入其中某一块代码区域
       
        // 形式1:单一判断,if  else
        //        a > 10
        if (a < 10) {
            System.out.println("a < 10");
        } else {
            System.out.println("a > 10");
        }


        //形式2:多层判断,最终流到 else 逻辑
        //        ~全部不满足~
        if (a < 10) {
            System.out.println("a < 10");
        } else if (a < 50) {
            System.out.println("a < 50");
        } else {
            System.out.println("~全部不满足~");
        }


        //形式3:多层判断,没有流到 else 逻辑
        //        a < 100000
        if (a < 10) {
            System.out.println("a < 10");
        } else if (a < 100) {
            System.out.println("a < 100");
        } else if (a < 100000) {
            System.out.println("a < 100000");
        } else {
            System.out.println("~全部不满足~");
        }
        
    }

switch case

  • 语法
    switch(表达式){ case {$值}:{$逻辑代码}; break; case {$值}:{$逻辑代码}; break; default:{$逻辑代码}; break; }
  • switch(表达式)中表达式的值必须是(byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);)
  • case中的值必须是常量,不能是变量名或不确定的表达式值;
  • 同一个switch语句,case中的常量值互不相同;
  • break用来在执行完一个case后跳出switch语句块;没有break,自己试一下;
  • default子句是选的。没匹配的case时执行default
    public static void main(String[] args) {

        int a = 50;

        switch (a) {
            case 50:
                System.out.println(50);//执行此处结束
                break;
            case 100:
                System.out.println(100);
                break;
            default:
                System.out.println("~没找到对应数字~");
                break;
        }

        String b = "王";
        switch (b) {
            case "赵":
                System.out.println(50);
                break;
            case "钱":
                System.out.println(100);
                break;
            case "孙":
                System.out.println(100);
                break;
            default:
                System.out.println("~没找到对应姓氏~");//执行此处结束
                break;
        }

    }

3.循环

while

  • 语法:while({$条件}) { {$逻辑代码} }
  • 通过判断条件,存在 死循环与非死循环
    死循环:程序无法退出,只能等待程序崩溃
    非死循环:程序通过 判断你条件退出;或者通过break退出;
    public static void main(String[] args) {

        //非死循环,退出条件为 :a等于0
        int a = 10;
        while (a != 0) {
            a = a - 1;
            System.out.println("1----" + a);
        }

        //非死循环,退出条件为 :a>100
        while (true) {
            a = a + 1;
            System.out.println("2----" + a);
            if (a > 100) {
                break;
            }
        }

        //死循环
        while (true) {
            System.out.println("死循环:" + a);
        }

    }

do while

  • 语法:do{ {$逻辑代码} } while( {$循环条件} )
  • 与while一样,只不过,先执行代码,后判断条件

    public static void main(String[] args) {
        //非死循环,退出条件为 :a等于0
        int a = 10;
        do {
            a = a - 1;
            System.out.println("1----" + a);
        }
        while (a != 0);

        //非死循环,退出条件为 :a>100
        do {
            a = a + 1;
            System.out.println("2----" + a);
            if (a > 100) {
                break;
            }
        } while (true);


        //死循环
        do {
            System.out.println("死循环:" + a);
        } while (true);

    }

for i

  • 语法 for(初始化条件;循环判断条件;循环结束后执行逻辑) { 循环体(逻辑代码)}
  • 仍然存在死循环情况(偶尔人为脑残~)
    public static void main(String[] args) {
       
        //非死循环,退出条件为 :i小于10
        for (int i = 0; i < 10; i++) {
            System.out.println("非死循环----" + i);
        }

        //死循环,退出条件为 !=0;无法退出
        for (int i = 0; i != -1; i++) {
            System.out.println("死循环----" + i);
        }

    }

foreach

  • 语法:for ( 对象 : 集合) { }
  • JDK1.5+提供的便捷遍历集合的语法
    public static void main(String[] args) {

        int a[] = new int[]{1, 2, 3, 4, 5, 6};
        
        for (int o : a) {
            System.out.println(o);
        }

    }

4.多层循环与主动退出(return、break、contuinue)

  • return; 退出当前方法,跟循环没关系,退出的是方法
  • break; 退出当前 {} 循环 (退出一层大括号)
  • continue; 结束本次循环,跟大括号没关系

循环代码

  • 注意输出结果
 /**
     * 输出结构
     * <p>
     * i=0
     * i=0 ; j=10
     * i=0 ; j=10 ; k=20
     * i=0 ; j=10 ; k=21
     * i=0 ; j=11
     * i=0 ; j=11 ; k=20
     * i=0 ; j=11 ; k=21
     * i=1
     * i=1 ; j=10
     * i=1 ; j=10 ; k=20
     * i=1 ; j=10 ; k=21
     * i=1 ; j=11
     * i=1 ; j=11 ; k=20
     * i=1 ; j=11 ; k=21
     */
    public static void main(String[] args) {

        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);

            for (int j = 10; j < 12; j++) {
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }

        }

    }

使用 continue

  • continue; 结束本次循环,跟大括号没关系
  • 注意对比输出结果
   /**
     * 输出结果
     * <p>
     * i=1
     * i=1 ; j=11
     * i=1 ; j=11 ; k=21
     */
    public static void main(String[] args) {

        for (int i = 0; i < 2; i++) {
            if (i == 0) {
                continue;
            }
            System.out.println("i=" + i);


            for (int j = 10; j < 12; j++) {
                if (j == 10) {
                    continue;
                }
                System.out.println("i=" + i + " ; j=" + j);


                for (int k = 20; k < 22; k++) {
                    if (k == 20) {
                        continue;
                    }
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }
        }
    }

使用 break

  • break; 退出当前 {} 循环 (退出一层大括号)
  • 注意对比输出结果
  /**
     * 输出结果
     * <p>
     * -----------------------------------------------------------------------------
     * i=0
     * -----------------------------------------------------------------------------
     * i=0
     * i=1
     * -----------------------------------------------------------------------------
     * i=0
     * i=0 ; j=10
     * i=0 ; j=11
     * i=1
     * i=1 ; j=10
     * i=1 ; j=11
     * -----------------------------------------------------------------------------
     */
    public static void main(String[] args) {

        System.out.println("---------------------------------------------------------------------");

        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);
            if (i == 0) {
                break;
            }
            for (int j = 10; j < 12; j++) {
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }
        }

        System.out.println("---------------------------------------------------------------------");
      
        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);

            for (int j = 10; j < 12; j++) {
                if (j == 10) {
                    break;
                }
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }
        }

        System.out.println("----------------------------------------------------------------------");
     
        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);

            for (int j = 10; j < 12; j++) {
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    if (k == 20) {
                        break;
                    }
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }
            }
        }
       
        System.out.println("----------------------------------------------------------------------");

    }

使用 return

  • return; 退出当前方法,跟本次循环没关系,跟 {} 循环也没关系,退出的是当前执行的方法
  • 注意对比输出结果
    /**
     * 输出结果
     * <p>
     * -----------------------------------------------------------------------------
     * i=0
     */
    public static void main(String[] args) {

        System.out.println("------------------------------------------");

        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);
            if (i == 0) {
                return;
            }
            for (int j = 10; j < 12; j++) {
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }
        }

        System.out.println("------------------------------------------");
        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);

            for (int j = 10; j < 12; j++) {
                if (j == 10) {
                    return;
                }
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }

            }
        }

        System.out.println("------------------------------------------");
        for (int i = 0; i < 2; i++) {
            System.out.println("i=" + i);

            for (int j = 10; j < 12; j++) {
                System.out.println("i=" + i + " ; j=" + j);

                for (int k = 20; k < 22; k++) {
                    if (k == 20) {
                        return;
                    }
                    System.out.println("i=" + i + " ; j=" + j + " ; k=" + k);
                }
            }
        }
        System.out.println("------------------------------------------");

    }

《上一篇:比较、运算、位运算》

《练习题:输出一个菱形》

《目录:Java渐进式学习》

《幕》

  • 留白 —<老吉>
  • ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长毛山顶洞人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值