for循环10000次花多长时间_java循环经典案例学会它入行java

循环结构

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的组成

  • 初始化语句:一条或者多条语句,这些语句完成一些初始化操作

  • 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体

  • 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情

  • 控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束

for循环

for循环语句格式

for(初始化语句;判断条件语句;控制条件语句) {
       循环体语句;
}

执行流程

  • 执行初始化语句

  • 执行判断条件语句,看其结果是true还是false

  • 如果是false,循环结束

  • 如果是true,继续执行

  • 执行循环体语句

  • 执行控制条件语句

  • 回到B继续

c8377d2a7e05ee9db3aea28b13936dcb.png

注意事项

  • 判断条件语句的结果是一个boolean类型

  • 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。

  • 一般来说:有左大括号就没有分号,有分号就没有左大括号

for语句的练习

代码示例:在控制台输出所有的”水仙花数”

/*
    需求:在控制台输出所有的”水仙花数”
    分析:
        我们都不知道什么叫"水仙花数",你让我怎么做呢?
        所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
        举例:153就是一个水仙花数。
        153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
        A:三位数其实是告诉了我们范围。
        B:通过for循环我们就可以实现获取每一个三位数
          但是麻烦是如何获取这个三位数的个,十,百位上的数据
          我们如何获取一个数据的个,十,百呢?
            假设有个一个数据:153
            ge: 153%10 = 3
            shi: 153/10%10 = 5
            bai:153/10/10%10 = 1
            qian:x/10/10/10%10
            wan:  x/10/10/10/10%10
            ...
        C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
          如果相同,就把该数据在控制台输出。
*/  
class ForDemo6 {  
    public static void main(String[] args) {  
        //三位数其实是告诉了我们范围。  
        for(int x=100; x<1000; x++) {  
            int ge = x%10;  
            int shi = x/10%10;  
            int bai = x/10/10%10;  
            //让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较  
            if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {  
                //如果相同,就把该数据在控制台输出。  
                System.out.println(x);  
            }  
        }  
    }  
}  

运行结果:

e1502ae5ae933d8f68de48642484da8e.png

代码示例:回文数

/*
    练习:
        请在控制台输出满足如下条件的五位数
        个位等于万位
        十位等于千位
        个位+十位+千位+万位=百位
    分析:
        A:五位数就告诉了我们范围。
        B:分解每一个五位数的个,十,百,千,万位上的数据
        C:按照要求进行判断即可
*/  
class ForDemo7 {  
    public static void main(String[] args) {  
        //五位数就告诉了我们范围。  
        for(int x=10000; x<100000; x++) {  
            //分解每一个五位数的个,十,百,千,万位上的数据  
            int ge = x%10;  
            int shi = x/10%10;  
            int bai  = x/10/10%10;  
            int qian = x/10/10/10%10;  
            int wan = x/10/10/10/10%10;  
            //按照要求进行判断即可  
            if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {  
                System.out.println(x);  
            }  
        }  
    }  
}

运行结果:

159e52f4572bdecd007b1087765513fd.png

while循环语句格式

基本格式

while(判断条件语句) {
      循环体语句;
}

扩展格式

初始化语句;
while(判断条件语句) {
      循环体语句;
      控制条件语句;
}
b757b2786a5dbf20d641eaf090885692.png

循环结构(for循环和while循环的区别):

for循环语句和while循环语句可以等价转换,但还是有些小区别的

  • 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

  • 场景区别:for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确操作

/*
    练习:用while循环实现
    左边:求出1-100之和
    右边:统计水仙花数有多少个
    初始化语句;
    while(判断条件语句) {
         循环体语句;
         控制条件语句;
    }
    for(初始化语句;判断条件语句;控制条件语句) {
        循环体语句;
    }
*/  
class WhileDemo2 {  
    public static void main(String[] args) {  
        //求出1-100之和  
        //for语句版本  
        int sum = 0;  
        for(int x=1; x<=100; x++) {  
            sum+=x;  
        }  
        System.out.println("sum:"+sum);  
        System.out.println("--------");  
        //while语句版本  
        int sum2 = 0;  
        int y=1;  
        while(y<=100) {  
            sum2+=y;  
            y++;  
        }  
        System.out.println("sum2:"+sum2);  
        System.out.println("--------");  
    }  
}  

运行结果:

5eb311dae785beb6363d76eafefcedd8.png
/*
    需求:统计水仙花数有多少个
*/  
class WhileDemo3 {  
    public static void main(String[] args) {  
        //for循环版本  
        int count = 0;  
        for(int x=100; x<1000; x++) {  
            int ge = x%10;  
            int shi = x/10%10;  
            int bai = x/10/10%10;  
            if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {  
                count++;  
            }  
        }  
        System.out.println("count:"+count);  
        System.out.println("------------");  
        //while循环版本  
        int count2 = 0;  
        int y = 100;  
        while(y<1000) {  
            int ge = y%10;  
            int shi = y/10%10;  
            int bai = y/10/10%10;  
            if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == y) {  
                count2++;  
            }  
            y++;  
        }  
        System.out.println("count2:"+count2);  
    }  
}  

运行结果:

bd0b4f67efe4503fb432f2ab043b7c55.png

while循环和for循环的区别?

使用区别:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。

其实还有一种场景的理解:
如果是一个范围的,用for循环非常明确。
如果是不明确要做多少次,用while循环较为合适。举例:吃葡萄。

class WhileDemo4 {  
    public static void main(String[] args) {  
        //for循环实现  
        for(int x=0; x<10; x++) {  
            System.out.println("学习Java技术哪家强,中国北京传智播客");  
        }  
        //这里不能在继续访问了  
        //System.out.println(x);  
        //while循环实现  
        int y = 0;  
        while(y<10) {  
            System.out.println("学习Java技术哪家强,中国北京传智播客");  
            y++;  
        }  
        //这里是可以继续访问的  
        System.out.println(y);  
    }  
}   

do…while循环语句格式

基本格式

do {
      循环体语句;
}while((判断条件语句);

扩展格式

初始化语句;
do {
     循环体语句;
     控制条件语句;
} while((判断条件语句);
3781ceffad88adbe8c45e10acdedc910.png

注意死循环:
A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
B:两种最简单的死循环格式
while(true){...}
for(;;){...}

循环嵌套

代码示例:九九表

/*
    需求:在控制台输出九九乘法表。
    首先我们写出九九乘法表:
        1*1=1
        1*2=2   2*2=4
        1*3=3   2*3=6   3*3=9
        1*4=4   2*4=8   3*4=12  4*4=16
        ...
        1*9=9   2*9=18  3*9=27  ...
    我们先把这个九九乘法表看出是这样的一个形状:
        *
        **
        ***
        ****
        *****
        ******
        *******
        ********
        *********
    注意:
        '\x' x表示任意,这种做法叫转移字符。
        '\t'    tab键的位置
        '\r'    回车
        '\n'    换行
*/  
class ForForDemo3 {  
    public static void main(String[] args) {  
        for(int x=0; x<9; x++) {  
            for(int y=0; y<=x; y++) {  
                System.out.print("*");  
            }  
            System.out.println();  
        }  
        System.out.println("--------------");  
        //为了使用数据,我们从1开始  
        for(int x=1; x<=9; x++) {  
            for(int y=1; y<=x; y++) {  
                System.out.print(y+"*"+x+"="+y*x+"\t");  
            }  
            System.out.println();  
        }  
    }  
}  

运行结果:

cd4b5e16cc7eb91d0cb65ed4ee101bbd.png

跳转控制语句

Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。
break 中断、continue 继续、return 返回

break的使用场景

  • 在选择结构switch语句中

  • 在循环语句中

  • 离开使用场景的存在是没有意义的

break的作用

  • 跳出单层循环

  • 跳出多层循环
    带标签的跳出
    格式:标签名: 循环语句
    标签名要符合Java的命名规则

/*
    控制跳转语句:
        break:中断
        continue:继续
        return:返回
    break:中断的意思
    使用场景:
        A:switch语句中
        B:循环语句中。
            (循环语句中加入了if判断的情况)
        注意:离开上面的两个场景,无意义。
    如何使用呢?
        A:跳出单层循环
        B:跳出多层循环
            要想实现这个效果,就必须知道一个东西。带标签的语句。
            格式:
                标签名: 语句
*/  
class BreakDemo {  
    public static void main(String[] args) {  
        //在 switch 或 loop 外部中断  
        //break;  
        //跳出单层循环  
        for(int x=0; x<10; x++) {  
            if(x == 3) {  
                break;  
            }  
            System.out.println("HelloWorld");  
        }  
        System.out.println("over");  
        System.out.println("-------------");  
        wc:for(int x=0; x<3; x++) {  
            nc:for(int y=0; y<4; y++) {  
                if(y == 2) {  
                    //break nc;  
                    break wc;  
                }  
                System.out.print("*");  
            }  
            System.out.println();  
        }  
    }  
}  

continue的使用场景

  • 在循环语句中

  • 离开使用场景的存在是没有意义的

continue的作用

  • 单层循环对比break,然后总结两个的区别

  • break  退出当前循环

  • continue  退出本次循环

  • 也可以带标签的使用

/*
    continue:继续
    使用场景:
        循环中。离开此场景无意义。
    测试,找到和break的区别:
        break:跳出单层循环
        continue:跳出一次循环,进入下一次的执行
    练习题:
        for(int x=1; x<=10; x++) {
            if(x%3==0) {
                //在此处填写代码
            }
            System.out.println(“Java基础班”);
        }
        我想在控制台输出2次:“Java基础班“
            break;
        我想在控制台输出7次:“Java基础班“
            continue;
        我想在控制台输出13次:“Java基础班“    
            System.out.println(“Java基础班”);
*/  
class ContinueDemo {  
    public static void main(String[] args) {  
        for(int x=0; x<10; x++) {  
            if(x == 3) {  
                //break;  
                continue;  
            }  
            System.out.println(x);  
        }  
    }  
}  

return关键字

不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解

/*
    return:返回
    其实它的作用不是结束循环的,而是结束方法的。
*/  
class ReturnDemo {  
    public static void main(String[] args) {  
        for(int x=0; x<10; x++) {  
            if(x == 2) {  
                System.out.println("退出");  
                //break;  
                //continue;  
                return;  
            }  
            System.out.println(x);  
        }  
        System.out.println("over");  
    }  
}  

更多好文

java精品入门-0基础第一篇

JDK、JRE、JVM的区别与联系

运算符-小学生都能学会的java基础

Java中的 "如果,那么" 怎么表达?

亲,需要你的“分享”“在看”

1b471e811c54fe8107e5263773fc25e8.png

IT入门 感谢关注

程序员题库→程序员用的单词表→练习地址:http://520mg.com/it/#/code
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值