java循环语句的理解和使用

前言

Java中的循环语句是用于重复执行一段代码直到满足特定条件为止的一种控制结构。通过循环语句,你可以避免在代码中重复书写相同的代码块,从而提高代码的可读性和可维护性

提前概要注意的事项有以下:

嵌套循环:一个循环内部可以包含另一个循环,这称为嵌套循环。
循环控制语句:break 语句用于立即退出循环;continue 语句用于跳过当前循环的剩余部分,并开始下一次循环迭代。
避免无限循环:确保循环条件最终会变为 false,否则会导致无限循环,从而使程序崩溃。

循环语句的使用

for 循环

for 循环是最常用的循环之一,特别适用于已知循环次数的情况

下图为代码解析图表

for (初始化表达式; 循环条件; 步进表达式) {
    // 循环体
}

初始化表达式就是让你定义初始值(又称用于存储项),循环条件顾名思义成立条件则开始循环不满足则跳出循环,步进则是成立条件后做什么然后再次循环

下面为示例:满足i小于5则循环

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

int则是定义这个值的属性,但这三个都是可以省略的,而冒号不可以(笑)

细节与注意事项:

初始化表达式在循环开始前执行一次,通常用于初始化一个或多个循环控制变量
条件表达式在每次循环迭代之前都会计算,如果为true,则执行循环体;如果为false,则跳过循环体
步进表达式在每次循环迭代结束时执行,通常用于更新循环控制变量的值
使用for循环时,需要确保初始化变量、条件判断、更新循环变量以及循环体的执行逻辑正确

增强型 for 循环

运用于,简化数组或集合的遍历操作,无需显式地使用索引或迭代器

下图为结构理解:

for (数据类型 元素 : 数组或集合) { // 循环体 }

下面为例子:遍历一个整数数组并打印每个元素

public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int number : numbers) {
            System.out.println("number = " + number);
        }
    }
细节与注意事项:

主要用于遍历数组或集合中的元素
自动处理迭代过程,代码更加简洁且减少了出错的风险
不能用于修改集合的大小(如添加或删除元素),因为这会抛出ConcurrentModificationException异常

while 循环

运用场合,基于指定的条件来重复执行一段代码块。只要条件为真(条件表达式的计算结果为true),循环体内的代码就会不断执行;当条件变为假(false)时,循环终止

下图为结构理解(语法):

while(循环条件) { // 循环体 }

下图为示例:打印从0到9的数字

public static void main(String[] args) {
        int i = 0;
        while (i < 10) {
            System.out.println("i = " + i);
            i++;
        }
    }
细节与注意事项:
  • 在每次迭代之前计算条件表达式
  • 循环体包含要重复执行的语句,可以是任何有效的Java语句
  • 使用break语句来提前终止循环,或使用continue语句来跳过当前迭代并继续下一次迭代(如果条件仍然为真)
  • 如果条件表达式始终为true,则可能导致无限循环,需要特别注意
  • 需要在循环之前初始化任何需要的变量,因为while循环不自带初始化步骤

do-while 循环

运用场合:

至少执行一次循环体,然后在每次迭代之后检查条件。如果条件为真,则继续执行循环体

下图为结构理解(语法):

do { // 循环体 } while (循环条件);

下图为示例:打印从0到9的数字:

public static void main(String[] args) {
        int i = 0;
        do {
            System.out.println("i = " + i);
            i++;
        } while (i < 10);
    }

细节与注意事项:

  • 先执行循环体内的代码,然后再检查条件表达式是否为真
  • 循环体至少会被执行一次,因为条件检查是在循环体执行之后进行的
  • 如果条件表达式始终为true,也可能导致无限循环
  • 需要在循环之前初始化任何需要的变量,因为do-while循环也不自带初始化步骤
  • 循环体末尾有一个分号(;),这是语法要求的一部分

break 语句

理解:break 语句是编程中用于立即退出循环或 switch 语句的一种控制流语句。它允许你在满足特定条件时,提前结束循环的执行,而不是等待循环自然结束。下面详细讲解 break 语句的用法、注意事项以及理解细节

基本用法:
1.在循环中使用
break 语句可以用于 for、while 和 do-while 循环中。当 break 语句被执行时,循环会立即终止,并且程序会继续执行循环之后的代码
2.在 switch 语句中使用

break 语句也用于 switch 语句中,以防止代码自动“落入”下一个 case 块。如果没有 break,程序会继续执行下一个 case,直到遇到 break 或 switch 语句的末尾

注意事项

避免无限循环:
使用 break 可以防止某些情况下产生的无限循环,但如果不正确使用(如缺少 break),可能导致程序无法按预期运行
代码可读性:
过多或不当使用 break 可能降低代码的可读性和维护性。尽量使用逻辑控制结构(如 if 语句)和循环控制语句(如 continue)来优化代码
嵌套循环:
在嵌套循环中使用 break 时,只会退出最近的循环。如果需要退出多层循环,可以考虑使用标签(在某些语言中如 Java)或者重构代码

理解细节


控制流:break 语句用于改变程序的正常执行顺序,立即退出当前的循环或 switch 语句
作用域:break 语句只影响其所在的最近的循环或 switch 语句
语法:break 语句本身不需要任何参数,它是独立的语句

continue 语句

continue 语句是编程中用于跳过当前循环迭代的一种控制流语句。当执行到 continue 语句时,当前迭代剩余的代码将不再执行,而是直接跳到循环的下一次迭代

与break的区别:

break 是终止整个循环或 switch 语句,而 continue 是跳过当前迭代,继续下一次循环

1.在循环中使用:
continue 语句可以用于 for、while 和 do-while 循环中。当 continue 语句被执行时,当前迭代剩余的代码会被跳过,循环变量会更新,然后检查循环条件以决定是否继续下一次迭代
2.嵌套循环:
在嵌套循环中使用 continue 时,只会影响当前层的循环。如果需要跳过多层循环,可以考虑使用标签(在某些语言中如 Java 支持),但通常更好的做法是通过重构代码来避免这种情况
注意事项


避免无限循环:
虽然 continue 不会直接导致无限循环,但如果不当使用(如条件永远为真),可能会导致程序无法按预期退出循环
代码可读性:
过多或不当使用 continue 可能降低代码的可读性和维护性。尽量使用逻辑控制结构(如 if 语句)来优化代码,使循环体内的逻辑更加清晰
与 break 的区别:
continue 是跳过当前迭代,继续下一次循环;而 break 是终止整个循环或 switch 语句

理解细节:


控制流:continue 语句用于改变程序的正常执行顺序,在当前迭代中跳过剩余的代码,直接进行下一次循环迭代
作用域:continue 语句只影响其所在的最近的循环
语法:continue 语句本身不需要任何参数,它是独立的语句。在嵌套循环中,可以使用标签来指定要跳过的循环层(但通常不推荐)

嵌套循环

嵌套循环,指的是在一个循环结构内部再嵌套另一个或多个循环结构。这种结构在编程中非常常见,尤其是在需要处理多维数据或进行复杂迭代时。嵌套循环允许程序员在内部循环完成一次完整的迭代后,外部循环再进行下一次迭代,从而实现对多维数据的遍历或执行更复杂的逻辑操作

基本结构:

for (初始化外部循环变量; 外部循环条件; 更新外部循环变量) {
    // 外部循环的代码
    for (初始化内部循环变量; 内部循环条件; 更新内部循环变量) {
        // 内部循环的代码
    }
    // 外部循环的其他代码(内部循环结束后执行)
}

简单说就是一个外部循环包含一个或多个内部循环,内部循环的代码会在外部循环的每次迭代中重复执行(外循环每执行一次,内循环就会完整地执行一遍)

下面举一个简单的嵌套循环例子(打印从1到5的数字与从1到5的数字的乘积):

# 外层循环:遍历1到5的数字
for i in range(1, 6):
    # 内层循环:遍历1到5的数字
    for j in range(1, 6):
        # 打印乘积,并添加一个制表符(tab)进行格式化
        print(f"{i} * {j} = {i * j}", end='\t')
    # 内层循环结束后换行
    print()

下图为运行结果

例子解析:在这个例子中,外层循环变量i从1遍历到5,内层循环变量j也从1遍历到5。每次内层循环计算并打印i和j的乘积,并在每个乘积后面添加一个制表符(\t)以便在同一行中对齐输出。当内层循环结束时,通过print()函数换行,以便下一行输出

遍历二维数组:嵌套循环常用于遍历二维数组或矩阵,其中外部循环遍历行,内部循环遍历列

多层数据结构:在处理如树、图等多层数据结构时,嵌套循环也非常有用。虽然对于这类数据结构,递归或栈/队列等数据结构可能更为常见,但在某些情况下,嵌套循环也是一种可行的选择

注意事项
  • 性能问题:嵌套循环的时间复杂度通常是外循环次数乘以内循环次数的乘积,因此过多的嵌套循环可能导致性能问题。
  • 边界条件:需要仔细处理循环的边界条件,以避免数组越界、无限循环等问题。
  • 可读性:过多的嵌套循环可能会降低代码的可读性,因此在实际编程中,应尽量简化循环结构,或使用其他数据结构(如哈希表、树等)来优化算法

个人理解和总结

大合集嗷(概念类)

循环条件:所有循环语句都基于条件表达式来控制循环的执行。条件为真时执行循环体,条件为假时终止循环
初始化与更新:对于需要初始化的变量,需要在循环之前或循环的初始化表达式中进行。循环变量的更新通常在循环体的最后进行(对于for循环,在步进表达式中进行)
避免无限循环:需要确保循环条件最终会变为假,以避免无限循环。这通常通过更新循环变量来实现
break与continue的使用:break语句用于提前终止循环,continue语句用于跳过当前迭代并继续下一次迭代。它们可以用于控制循环的执行流程

break语句是一种强大的控制流工具,但使用时需要谨慎,确保不会破坏程序的逻辑或降低代码的可读性。通过合理的设计和使用,break 语句可以显著提高程序的效率和灵活性

continue语句是一种有用的控制流工具,但使用时需要谨慎,确保不会破坏程序的逻辑或降低代码的可读性。通过合理的设计和使用,continue 语句可以帮助提高程序的效率和灵活性。然而,在大多数情况下,通过重构代码和逻辑控制来避免使用 continue 语句,可以使代码更加清晰和易于维护

嵌套循环是编程中一种强大的控制结构,它允许程序对多维数据结构进行遍历和操作,并可以实现复杂的逻辑。然而,嵌套循环也可能带来性能问题和可读性问题。因此,在使用嵌套循环时,需要仔细考虑其必要性、边界条件以及可能的优化方法。在实际编程中,应尽量简化循环结构,或使用其他数据结构来优化算法,以提高程序的性能和可读性

参考文献:Java——循环语句_java循环-优快云博客文章浏览阅读2.6k次,点赞27次,收藏19次。传统的for循环有三个部分:初始化语句、条件表达式和更新语句。这三个部分一起控制了循环的执行。condition;update) {// 循环体:在循环开始前执行一次,用于初始化循环控制变量。condition:每次循环开始时计算,如果返回true,则执行循环体;如果返回false,则退出循环。update:每次循环结束后执行,用于更新循环控制变量。i < 10;i++) {_java循环https://blog.youkuaiyun.com/stewie6/article/details/139439631?fromshare=blogdetail&sharetype=blogdetail&sharerId=139439631&sharerefer=PC&sharesource=zzlt123455&sharefrom=from_link

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值