关于Java基础中的循环

首先,要使用循环就要先明白什么是循环,以及循环的应用场景.

那么顾名思义,循环是程序中不断重复出现的代码的代替,也就是说,当我们在编程中需要多次且连续使用一句话或一段相同的代码时,就可以使用循环来代替了.值得一提的是,通常情况下循环的使用中都是会有递归性的,每一段代码的数据可能不一样.

最简单的例子就是1到100的求和,因为每一次求和的操作实质上都是两个数的相加,那么我们就可以使用循环来借助简单的代码来实现.首先,我们需要一个一个变量来存储1到100的每一个数,但是要注意的是我们每一个数在相加后就不需要在使用了,故而我们只用一个变量来存储就好.同时,我们还需要一个变量来存储每次相加后的和,用于最后的数据输出.

那么根据上面的例子,我们不难明白,在该循环中我们需要一个每次+1的变量i,和一个用于求和的sum变量.那么逻辑就很清晰了,定义一个变量i,使其每次+1就可以了,这借助我们的i++就可以做到,而每一次循环中都需要的语句就是sum = sum + i;那么这句话就是我们循环中需要多次运行的主体了. 

了解了这些东西,我们开始进入理论的教学,首先循环分为While循环,do-while循环,for循环和for-each循环.在这里for-each循环先不讲,前期学习中还不需要这个循环

while循环

 while循环使用的关键字就是while了,在编程中他的基本格式为

while(布尔表达式){
    循环体;
}

 在这里面,布尔表达式是用来判断循环是否进行的标志,倘若循环能够一直运行下去,那我们循环后面的语句也就没有意义了,因为程序会一直停留在循环这里而不跳出.在程序运行中,循环会先进行boolean表达式的判断,当表达式的返回值为true时,循环会开始执行,当表达式的值为false时,会跳出循环.

进入循环后,开始顺序执行循环体内的内容。当循环体内容顺序执行完毕后,会回到while处,重新进行boolean表达式的判断,直到表达式为false时,跳出循环。

根据例子来看,在这里面我们的循环条件是i<=100循环体就是 sum += i;以及让循环条件趋于结束的i++;操作。下面是具体的代码:

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

我们可以注意到,倘若在boolean表达式在一开始就是false,就不会进入循环内部,即循环体一次也不执行。

do-while循环

do-while循环大致与while循环一致,但是格式与循环次数不同;

do{
    循环体;
}while(boolean);

同样都需要while(boolean表达式),但是可以发现,这次的while的()后面跟了一个;而while循环中并没有.

在这里面有一点可以思考,do-while循环中把用来判断的while语句放在了{}的后面,那这样会导致什么效果呢?

经过思考后,我们可以明白,循环在while的前面,那么我们程序运行时会先进入到循环体内进行顺序执行,再进行判断.这样的话不管条件是不是成立,我们都会运行一次循环体的语句

用do-while循环敲出来的例子代码如下:

do {
    i++;
    sum += i;
}while(i<=100);

for循环

for循环是程序员最常使用的循环,其灵活性比较高,当然,这几种循环都可以用来解决相同的问题,只是各人的习惯不同.那么让我们来学习一下for循环吧

for循环的基本格式不同于while循环,for循环的表达式较多,其基本格式如下

for(表达式1;表达式2;表达式3){
    表达式4;
}

在这其中,表达式1是用于声明循环变量的,表达式2是循环条件,其值为boolean类型,表达式3是循环增量,即每次循环一次后的变化值.表达式4是循环的主体结构.

结合例子来看的话,就是

for(int i = 1;i<=100;i++){
    sum += i;
}

在for循环中比较特殊的就是其三个表达式均可以省略.即可以写成for(;;)的形式,但是表达式1一定要有值,不能写成for(i;;)

在for循环中的循环执行顺序是1>2>4>3>2>4>3>2>4>3>.....>4>2,最终的结束一定是在2的判断时结束,

循环的嵌套使用

不管是那种循环,在使用过程中都是可以相互嵌套使用的.

例如for的嵌套

for(;;){

        for(;;){

        }

}

循环中的跳出语句

break语句

首先,在switch-case中我们已经初步认识了break,在循环中我们可以用于跳出循环,使循环结束.但是多层循环时,结束的是当前循环.

for(;1;){

        for(;2;){

                break:

        }

}

在上述伪代码中,我们为了方便,在表达式2出直接写了编号来代表第几层循环.当执行break时,我们会跳出for2的循环,重新回到for1的循环中

continue语句

continue是用于跳出本次循环的语句,但是同break一样,continue跳出的是当前循环的本次

for(;i<5;i++){

       if(i%3==0)

                continue;

}

在上述代码中,continue会跳出i=3时的循环,进入到i=4的循环中继续运行当前循环.

定向跳转的标签

不难发现,无论是break还是continue都是跳出一层循环,但是解决实际问题时,我们往往需要跳出多重循环,那么这个时候我们就需要用到标签;来进行定向跳转,

out:for(;1;){

        for(;2;){

                break out;

        }

)

在这段代码中,由于我们添加了标签out,所以在跳出循环时,我们会跳转至标签的位置,这里的标签也是一个标识符,需要满足标识符的命名规则,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值