Redian新闻
>
Java 循环语句的简要指南 | Linux 中国

Java 循环语句的简要指南 | Linux 中国

科技
 
导读:无论你使用的是 while 循环、do/while 循环,还是无限循环,了解循环的工作原理对 Java 编程至关重要。
本文字数:2728,阅读时长大约:3分钟

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

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

Java while 循环

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

  1. package com.opensource.example;
  2. public class Example {
  3. public static void main(String[] args) {
  4. int count = 0;
  5. while (count < 5) {
  6. System.out.printf("%d ", count);
  7. count++;
  8. }
  9. }
  10. }

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

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

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

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

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

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

  1. $ java ./while.java
  2. $

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

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

Java do while 循环

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

  1. package com.opensource.example;
  2. public class Example {
  3. public static void main(String[] args) {
  4. int count = 9;
  5. do {
  6. System.out.printf("%d ", count);
  7. count++;
  8. } while(count == 5);
  9. }
  10. }

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

  1. $ java ./do.java
  2. 9

Java 无限循环

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

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

  1. package com.opensource.example;
  2. public class Example {
  3. public static void main(String[] args) {
  4. long myTime = System.currentTimeMillis();
  5. int c;
  6. if ( myTime%2 == 0 ) {
  7. c = 128;
  8. } else {
  9. c = 1024;
  10. }
  11. while(true) {
  12. System.out.printf("%d Zombies\n", c);
  13. // break for convenience
  14. if ( c <= 0 ) { break; }
  15. c--;
  16. }
  17. }
  18. }

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

  1. $ java ./zcount.java
  2. 1024 Zombies
  3. 1023 Zombies
  4. [...]
  5. 0 Zombies

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

Java 循环

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


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

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

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

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1858.5 篇
|
贡献: 3385 天
2013-10-25
2023-01-31
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Linux 6.1 内核被批准为长期支持版本 | Linux 中国Linux 中的 su 和 sudo 命令有什么区别? | Linux 中国如何在 Linux 中降级 Flatpak 软件包 | Linux 中国说的shop目标价也到了今天5 个适合视力障碍者的 Linux 发行版 | Linux 中国Kali Linux 发布今年最后一个版本 | Linux 中国在 Linux 上试试这个 Java 文件管理器 | Linux 中国如何在 Linux 系统中访问 UEFI 设置 | Linux 中国如何在 Linux 中找到一个进程 ID 并杀死它 | Linux 中国如何在 Linux 中使用 SCP 安全地传输文件 | Linux 中国回顾 2022 五个最佳 Linux 发行版 | Linux 中国OBS Studio 29 发布,但对 Linux 用户来说变化不大 | Linux 中国茅房又要为秋风所破试试这个 Linux 网络浏览器作为你的文件管理器 | Linux 中国Cinnamon 是一个被低估的神奇 Linux 桌面环境 | Linux 中国你现在可以在 Arch Linux 上安装 Unity 7.6 桌面了 | Linux 中国Linux Mint 21.1 发布:大量的视觉变化和改进 | Linux 中国Manjaro Linux 22.0 发布 | Linux 中国任志强署名炮轰全文重读适用于 Linux 的五大流媒体直播应用 | Linux 中国lnav: 用于 Linux 的高级日志文件浏览器 | Linux 中国在 Linux 中使用 “Converter” GUI 工具转换和操作图像 | Linux 中国在 Linux 中创建定时器 | Linux 中国使用 PCManFM 文件管理器让你的 Linux PC 轻装上阵 | Linux 中国GNOME 2 的 Linux 文件管理器 Caja | Linux 中国Gnoppix Linux 22.12 发布 | Linux 中国天赋“易昺(bǐng)”,创造历史!在 Linux 上试试这个基于 Python 的文件管理器 | Linux 中国49.64$Linux 内核 6.1 发布,包含初始 Rust 支持 | Linux 中国十年前的今天2023 年十佳 Linux 服务器发行版 | Linux 中国为什么你要在 Linux 上尝试 Nemo 文件管理器? | Linux 中国世界上只有两个 Linux 发行版:Arch Linux 与其它 | Linux 中国如何在 Linux 中更新 Flatpak 软件包 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。