1.死循环

一直循环的执行下去,如果没有干预不会停止下来

死循环在服务器上使用较多,例如百度,Google浏览器等,随时随地都可以访问的这些服务,其实就是一个死循环。

for:

for (; ;){
            System.out.println("hello,world");
        }

while(经典写法,常用,专业):

while (true){
            System.out.println("快乐的死循环");
        }

do...while:

do {
            System.out.println("快乐的死循环");
        }while (true);

死循环案例:密码验证

需求:系统密码是520,请用户不断的输入密码验证,验证不对提示密码错误,验证成功提示欢迎进入系统,并停止程序运行。

分析:

使用while死循环,让用户不断输入密码

与密码比对:验证不成功提示密码错误,验证成功提示欢迎进入系统,并使用break结束当前循环的执行。

/*    实现:
                1.导入扫描器对象包
                2.定义系统密码
                3.创建扫描器对象,用于用户输入密码
                4.定义while死循环,让用户不断输入密码验证
                5.定义变量,用于接收用户输入的密码
                6.if判断用户输入的密码 是否符合系统密码
                7.验证成功,则提示密码正确,欢迎进入系统,使用break结束所在循环的执行
                8.验证失败,提示密码错误,让用户继续输入密码
         */
        int systemPassword = 520;           //定义需求的系统密码
        Scanner sc = new Scanner(System.in);        //创建扫描器对象,用于用户输入密码
        while (true){                       //定义while死循环,让用户不断输入密码验证
            System.out.println("请输入密码");
            int password = sc.nextInt();            //定义变量password,接收用户的密码
            if (password==systemPassword){          //if判断用户输入的密码是否符合系统密码
                System.out.println("欢迎进入系统...");        //成功即进入系统
                break;                              //结束所在循环的执行
            }else {                             //验证失败输出密码错误提示,让用户继续输出密码
                System.out.println("密码错误请重新输入" );
            }
        }

输出结果:

java outofmemory 死循环 java陷入死循环_System

 2.嵌套循环

外部循环每循环一次,内部循环全部执行完一次

例子1:

/*目标:理解嵌套循环的执行流程;
        * 场景:假如你有老婆,然后你犯错了,你老婆罚你说5天,每天3次说我爱你*/
        for (int i = 1; i < 6; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.println("我爱你");
            }
            System.out.println("第" +
                    i+"天");
        }

输出结果:

java outofmemory 死循环 java陷入死循环_for循环_02

 例子2:

/*需求:在控制台使用*打印出4行5列的矩形
         分析:1.定义一个外部的for循环,用于打印行数4;
         2.在定义一个内部的for循环,用于打印列数5;
         3.在内部for循环中重复打印*;
         4.当内部for循环每次执行玩一次后,加一个换行,实现需求所需的4行5列。
         */
        for (int i = 0; i < 4; i++) {           //外部循环用作于打印行数:4
            for (int j = 0; j < 5; j++) {          //内部循环用作于打印列数:5
                System.out.print("*");          //此处不能使用println,需要把ln去掉,表示的是不换行
            }
            System.out.println();                   //打印换行,当内部for循环每打印完5个*后换一行
        }

注意:

1.输出语句如果是println,"*"会单行单个的输入向下排列,需要更换成print不换行才能满足需求

2.如果没在内部的for循环每打印完5个"*"的后加上打印换行,"*"便会排成一列

3.break

跳出并结束当前所在循环的执行

4.continue

用于跳出当前循环的当次执行,进入下一次循环

注意事项:

注意事项
break:只能用于结束所在循环,或者结束所在switch分支的执行

continue:只能在循环中进行使用
break例子:

// 场景:假如你女朋友因为你犯错生气了,罚你做5天家务,每天都是洗碗,但是三天后,她心软了,就原谅你了
        /*
            具体实现:
                1.先定义一个for循环,定义初始化语句为:int i = 1; 定义循环条件为:i<6; (5天家务); 定义迭代语句 i++
                2.每天重复一件事:洗碗
                3.再使用if判断,是否做家务够3天了,够了,则表示女友心软了,原谅你了
                4.使用break结束当前所在循环的执行
         */
        // break:跳出并结束当前所在循环的执行
        // 1.先定义一个for循环,定义初始化语句为:int i = 1; 定义循环条件为:i<6; (5天家务); 定义迭代语句 i++
        for (int i = 1; i < 6; i++) {
            // 2.每天重复一件事:洗碗
            System.out.println("第" + i + "天快乐的洗碗~~~");
            // 3.再使用if判断,是否做家务够3天了
            if (i == 3) {
                // 够了,则表示女友心软了,原谅你了
                System.out.println("今天女友说原谅我了!可以结束快乐的洗碗了~");
                // 4.使用break结束当前所在循环的执行
                break;
            }
        }

输出结果:

java outofmemory 死循环 java陷入死循环_jvm_03

 continue例子:

// 场景:假如你女朋友因为你犯错生气了,罚你做5天家务,每天都是洗碗,但到了第三天她心软了,原谅你了;但是依旧不解恨,继续洗第4、5天
        /*
            具体实现:
                1.先定义一个for循环,定义初始化语句为:int i = 1; 定义循环条件为:i<6; (5天家务); 定义迭代语句 i++
                2.每天重复一件事:洗碗
                3.先if判断,是否做家务够3天了,够了,则表示女友心软了,原谅你了,但是依旧不解恨,使用continue立即跳出当次执行,进入下一次循环,继续让你洗第4、5天
         */
        // continue:跳出当前循环的当次执行,进入下一次循环
        // 1.先定义一个for循环,定义初始化语句为:int i = 1; 定义循环条件为:i<6; (5天家务); 定义迭代语句 i++
        for (int i = 1; i < 6; i++) {
            // 3.先if判断,是否做家务够3天了,够了,则表示女友心软了,原谅你了,但是依旧不解恨,继续让你洗第4、5天
            if (i == 3) {
                // 够了,则表示女友心软了,原谅你了,但是依旧不解恨,使用continue跳出当次执行,进入下一次循环,继续让你洗第4、5天
                System.out.println("今天女友说原谅我了!但好像没有完全解恨,看来我是要继续完成剩余两天的洗碗活了!");
                continue;   // 立即跳出当前循环的当次执行,进入下一次循环
            }
            // 2.每天重复一件事:洗碗
            System.out.println("第" + i + "天快乐的洗碗~");
        }

输出结果:

java outofmemory 死循环 java陷入死循环_开发语言_04