Java 循环语句的简要指南
创始人
2024-03-02 14:19:18
0

无论你使用的是 while 循环、do/while 循环,还是无限循环,了解循环的工作原理对 Java 编程至关重要。

只要某些预定的条件为真,一个 while 循环就会执行一组任务。这被认为是一个控制结构,可以指导程序的流程。它是一种你可以通过定义一个条件来告诉你的代码要做什么的方法,它可以测试它,并根据它发现的情况采取行动。Java 中的两种 while 循环是 whiledo/while

Java while 循环

while 循环的目的是对数据进行迭代,直到某个条件得到满足。要创建一个 while 循环,你需要提供一个可以测试的条件,然后是你想要运行的代码。Java 有几个内置的测试函数,其中最简单的是数学运算符(<, >, ==, 等等):

package com.opensource.example;

public class Example {
  public static void main(String[] args) {

  int count = 0;
  while (count < 5) {
    System.out.printf("%d ", count);
    count++;
    }
  }
}

在这个简单的例子中,条件是变量 count 小于 5。因为 count 被实例化为 0,然后在 while 循环的代码中增加 1,所以程序总共迭代了 5 次:

$ java ./while.java
0 1 2 3 4

在它进行第六次迭代之前,条件不再是真的,所以循环结束。

while 循环的条件语句是至关重要的。弄错了可能意味着你的循环永远不会执行。例如,假设你把 count == 5 作为条件:

while (count == 5) {
    System.out.printf("%d ", count);
    count++;

当你运行这段代码时,它的构建和运行都很成功,但什么也没有发生:

$ java ./while.java
$

循环被跳过了,因为 count 被设置为 0,而且在第一次遇到 while 循环的时候,它还是 0。循环从未开始,count 也从未被递增。

与此相反的是,当一个条件开始为真,并且永远不会为假时,这将导致一个无限循环。

Java do while 循环

while 循环相似,do/while 循环在每次迭代结束时测试条件,而不是在开始时测试条件。有了这个循环,循环中的代码至少运行一次,因为没有进入的入口,只有退出的出口:

package com.opensource.example;

public class Example {
  public static void main(String[] args) {

  int count = 9;
  do {
      System.out.printf("%d ", count);
      count++;
    } while(count == 5);
  }
}

在这个示例代码中,count 被设置为 9。循环重复的条件是 count 等于 5,但是 9 不等于 5。不过,这个检查要到第一次迭代结束时才进行:

$ java ./do.java
9

Java 无限循环

无限循环,正如它的名字所示,永远不会结束。有时它们是被错误地创建的,但无限循环确实有一个有效的场景。有时你想让一个进程无限地继续下去(在功能上是无限的,因为你不能保证你需要它什么时候停止),因此你可能会把你的条件设置为不可能满足的东西。

假设你写了一个应用程序,在僵尸天启期间计算留在你附近的僵尸的数量。为了模拟需要多少个循环才能达到 0 个僵尸的不确定性,我的演示代码从操作系统中检索了一个时间戳,并将计数器(c)的值设置为从该时间戳得出的某个数字。因为这是一个简单的例子,你不会真的想陷入一个无限循环,这段代码倒数到 0,并使用 break 函数来强制结束循环:

package com.opensource.example;

public class Example {
  public static void main(String[] args) {

  long myTime = System.currentTimeMillis();

  int c;

  if ( myTime%2 == 0 ) {
      c = 128;
  } else {
      c = 1024;
  }

  while(true) {
    System.out.printf("%d Zombies\n", c);

    // break for convenience
    if ( c <= 0 ) { break; }
    c--;
    }
  }
}

你可能要运行几次才能触发不同的僵尸总数,但有时你的程序会迭代 128 次,有时会迭代 1024 次:

$ java ./zcount.java
1024 Zombies
1023 Zombies
[...]
0 Zombies

你能说出为什么循环的终点是 0 而不是 -1 吗?

Java 循环

循环使你能够控制程序的执行流程。迭代在编程中很常见,无论你使用 while 循环、do/while 循环还是无限循环,了解循环的工作原理都是至关重要的。


via: https://opensource.com/article/23/1/java-loops

作者:Seth Kenlon 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

手撕数据结构—循环队列
Tips在一个函数的接口里面,如果说它的返回值是一个...
2025-06-01 11:45:02
Ripser.py学习 (...
文章目录1 表征共循环2 一些必须的库3 一个测试数据4 获取用于...
2025-05-31 12:47:44
C++入门3:从数组到循环
今天是新专栏第三期,至于我们要学的内容,...
2025-05-30 13:27:14
【解决】elementui...
同时显示多个tooltip——效果图: 点击第一个...
2025-05-28 11:49:40
原创 ...
#博主卖Deepseek付费课4天赚20万# 兄弟姐妹们谁懂啊!...
2025-02-08 06:15:33
Bytebuddy循环依赖...
解决循环依赖问题的一种方法是使用延迟加载(lazy loading...
2025-01-12 21:32:15

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...