Java基础3-循环

循环结构

  • 前面我们实现的功能中,都是顺序执行语句,但如果需要把一句话输出100次,再用顺序执行语句就是个体力活了。这时候我们可以使用循环结构,常见的循环体语句有for循环,while循环,do-while循环语句。
  • 循环结构:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句。当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

for循环结构:for([初始表达式],[布尔表达式],[步进表达式]){循环体内执行语句}

  • 初始化表达式可以为循环体定义一个新的变量并赋予一个初始值,一般是int变量。每次循环开始前,都会判断布尔表达式,如果为true则执行循环,如果为false则跳出并中断当前循环;一般布尔表达式中判断的变量即为初始化表达式中定义的变量。步进表达式是一种给布尔表达式中判断的变量进行变更的操作,一般是数值的增加或减少,以使循环语句可以被跳出并中断。每次循环结束时会执行一次步进表达式。循环代码体中,可以根据定义的int变量按序列去访问数据,如每次循环时按序列访问数组中的各个元素。
  • 注:一般只初始化一次。
public class Test6 {
    public static void main(String[] args) {
        for (int i = 1; i < 5; i++) {
            System.out.println("for循环可以方便打印多行语句,i="+i);
        }
    }
}
运行结果:
for循环可以方便打印多行语句,i=1
for循环可以方便打印多行语句,i=2
for循环可以方便打印多行语句,i=3
for循环可以方便打印多行语句,i=4
  • for循环在IDEA中的简写:数字.fori。一般地,数字是上限,自变量默认为i(可以更改),且是从0开始的。例如,在IDEA中输入:5.fori,点击回车键,出来的是:
 for (int i = 0; i < 5; i++) {
        }

while循环结构:

while[布尔表达式]{
//循环体内语句
}
  • while语句每次会循环开始前会判断布尔表达式,值为true则会继续执行循环体内的语句,直到布尔表达式的值为false为止。
public class Test4 {
    public static void main(String[] args) {
        int i=1;
        while(i<5){
            System.out.println("目前i的值是"+i);
            i++;
        }
    }
}
结果:
目前i的值是1
目前i的值是2
目前i的值是3
目前i的值是4

do-while循环语句

do{
//循环体内执行语句
}while[布尔表达式];
  • do-while语句与简单while语句类型不同的是:在第一次执行时,do-while中的语句至少会执行一次,即便布尔表达式第一次的值就为false;而在简单while语句中,当布尔表达式第一次的值为false时后面的语句就不会被执行。
public class Test5 {
    public static void main(String[] args) {
        int i=1;
        do{
            System.out.println("目前i的值是"+i);
            i++;
        }while (i < 5);
    }
}
运行结果:
目前i的值是1
目前i的值是2
目前i的值是3
目前i的值是4

跳转语句
continue 语句

  • 当循环语句执行到某一次循环,满足了某种条件并希望不再执行后面未执行的语句,而是直接跳到下一次循环时,可以使用continue关键字。continue并不是直接跳出整个循环语句,而是跳出当前的这次循环进人到下一次的循环中,循环语句中原有的布尔表达式仍需要进行判断。

注:如果是多个循环嵌套,内层循环语句中的continue语句只能中断当前循环,并不能影响到外层循环语句。

public class Test3_Break {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            if(i==3){
                continue;//跳出当前循环语句,执行下一次。会输出i=4
            }
            System.out.println("此时i="+i);
        }
    }
}
运行结果:
此时i=0
此时i=1
此时i=2
此时i=4

Break语句

  • Break关键字可以直接跳出当前循环。和continue不同的是,break语句是直接终止所有的循环语句,跳出循环体。
  • 和continue一样,多个循环嵌套中,内层循环语句的break语句只能中断内部循环,并不能影响到外层循环语句。
public class Test3_Break {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("此时i="+i);
            if(i==3){
                break;//跳出循环语句,不会输出i=4
            }
        }
    }
}
运行结果:
此时i=0
此时i=1
此时i=2
此时i=3

Return语句

  • return语句有两个用途,一个是定义一个方法的返回值(void方法也有一个隐式的return语句),另一个是直接跳出当前方法。所以,return语句也可以用来跳出当前所有的嵌套循环体。
  • 实际编程中会有这样一种情况:
    需要让程序跳出指定的循环语句。Java中提供了标签,一般定义在循环语句之前,用来标识当前循环。这相当于给当前循环起了一个名字以便它可以被找到。设置标签的原因是:如果存在多个循环语句嵌套,break和continue只能跳出当前循环,但是使用标签后,程序就可以中断循环并直接跳转到标签所在的地方。
public class Test2 {
    public static void main(String[] args) {
        for1:
        for (int i = 0; i < 5; i++) {
            System.out.println("此时,i="+i);
            for2:
            for (int j = 0; j < 4; j++) {
                System.out.print("此时,j="+j+"\t");
                if(j==3){
                    break for1;//指定跳出外层循环
                }
            }
        }
    }
}
运行结果:
此时,i=0
此时,j=0	此时,j=1	此时,j=2	此时,j=3	

无限循环

  • 虽然循环语句给编程带来了方便,但若使用不当也会造成“无限噩梦”。循环语句中必须有条件判断语句,如果判断语句不存在或者判断语句永远为true,就会导致程序不能从循环的代码块中跳出并执行接下来的代码,这种场景就是无限循环(也称“死循环”)。
public class Test7 {
    public static void main(String[] args) {
        int i=1;
        while (i < 5){
            System.out.println("i的值是"+i);
            //漏掉了步进表达式,i的值永远是1
        }
    }
}
  • 实际生活中,没有一台电脑是具有无限内存的,如果没有限制,无限循环中就会产生较多的对象,并且在没有得到及时处理的时候就会导致系统内存泄漏,严重时更会使系统崩溃。在开发中,要避免出现无限循环,就需要谨慎设计循环判断条件,必要时还需要在关键地方设置break语句强行跳出循环语句,这样其他正常逻辑的代码块才会被执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值