CodeGym /Java 博客 /China /Java 的 for 循环
作者
Milan Vucic
Programming Tutor at Codementor.io

Java 的 for 循环

已在 China 群组中发布
马克扎克伯格曾经指出,计算机擅长执行重复命令。但对于人类来说,重复工作并不简单,我们根本不愿意连续多次重复同一件事,但是计算机可以做数百万次,永远不会感到无聊。如果你要向所有 Facebook 用户发送问候语,人手不够,时间不足。但是,你可以通过编写几行代码来让计算机来解决此任务。这就是循环的工作方式。循环让我们不重复相同的常规操作。 Java 中最常用的循环是所谓的定义循环或 for 循环。

如何在 Java 中编写 for 循环?常规的 for 循环

for 循环执行某些语句一定次数。例如,编写 50 次“我不能这样,嗬嗬,嗬”,或向你所有的朋友发送邀请是这种循环的典型任务。 最常见的 for 循环版本的语法:

for ([counter initialization]; [checking conditions]; [changing of the counter])
{
    //  statements
}
初始化表达式执行一次,然后计算条件,它应该是一个布尔表达式。
  • 当循环开始时,初始化执行。
  • 当条件求值为假时,循环停止工作。
计数器正在不断变化,通常在每次循环迭代后发生递增(或递减)。 你可以跳过三个循环表达式中的任何一个(初始化、检查条件、更改计数器)。在循环的下一步之前检查循环条件。如果条件为假,则程序退出循环并继续执行 for 构造之后的指令。 下面是 for 循环的框图。 Java 的 for 循环 - 1

如何在 Java 中使用 for 循环?简单的例子。

这是一个特定的 Java for 循环示例。我们输出十遍“你好!”每次字符串都从新行开始并带行号。我们应该得到下一个输出:
  1. 你好!
  2. 你好!
  3. 你好!
  4. 你好!
  5. 你好!
  6. 你好!
  7. 你好!
  8. 你好!
  9. 你好!
  10. 你好!
下面是解决此问题的 Java 程序:

public class ForExample {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(i + 1 + ". Hello!");
       }
   }
}

此代码的工作方式?

第 1 步。Counter i = 0。循环检查条件,i << 10,因此执行循环语句。它打印出短语“1. 你好!”。1 是一个字符串 i + 1 (因为我们从零开始计数,但第一行仍然是第一行)。计数器 i 递增。现在,i = 1。 第 2 步。计数器 i = 1。i < 10,所以获得短语“2. 你好!” 并且 i + 1 = 2。 … 第 10 步。计数器 i = 9,我们得到“10. 你好!” i 递增到 10。 第 11 步。计数器 i = 10. i < 10 ? 不,这是错误的。因此,循环结束。 Java 的 for 循环 - 2

while 循环和 for 循环之异同

在 Java 中,如果布尔条件成立,则无限循环或 while 循环将一直执行。while 循环的语法:

while (boolean condition)
       {
            loop statements...
       }
你可以经常选择要使用的循环。这两个循环有时非常接近,可以同时使用。例如,下面是使用 while 循环编写的相同任务的代码(输出十次“你好!”并带有行号):

public class ForAndForEach {
   public static void main(String[] args) {
       int j = 0;  //  we use the counter this way 
       while (j < 10) {
           System.out.println(j + 1 + ". Hello!");
           j++;
       }
   }
}
不过,专业程序员不太喜欢使用 while 循环,而是尽可能使用 for 循环。
for while
如果我们已经知道迭代次数,将使用 for 循环。 如果我们不知道确切的迭代次数,将使用 while 循环。
初始化、条件检查和计数器更改已经融合在循环的语法中 循环内的初始化和条件检查。你还可以在语句中使用计数器。
无限 for 循环:

for(;;){
	System.out.println("working...");
}
无限循环 while:

while(true){
	System.out.println("working...");
}

在 java 中如何退出 for 循环

通常 for 循环像流程一样运行,退出循环的自然方式是条件取 false 值。但是,有两个控制语句允许你在获得条件的 false 值之前退出循环 - break 和 continue。
  • break 可以退出当前循环体,就好像循环条件已求值为 false 一样。
  • continue 会使循环跳转到下一步(迭代计数器)而不执行语句。
让我们使用 break 和 continue 来解决下一个问题。我们有一个姓名的数组,我们向这个数组中的每个人问好,除了陌生人。因此,如果我们在循环中遇到“陌生人”字符串,我们将退出循环(走开并停止向其他人打招呼)。

public class ForBreakExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
//  how to break out of a for loop, java: check if we have any "Stranger" in  //  our array            
if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               break;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
程序执行的结果是:

Hello,Mike
Hello,Dustin
I don't chat with strangers
看到了吗?在与卢卡斯和威尔打招呼之前,我们离开循环。现在让我们使用 continue 来忽略“陌生人”,但留在循环内向其他朋友问好。

public class ForContinueExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
           if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
结果是:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Hello,Lucas
Hello,Will
太棒了!我们和所有的朋友打了招呼,但没有和陌生人说话。

for 循环的增强版本,即 for-each

for-each 是一种 for 循环,当你需要处理数组或集合的所有元素时使用。实际上,这个循环中并没有使用 for-each 这个短语。语法如下:

for (type itVar: array)
{
    Block of operators;
}
其中 type 是迭代变量的类型(与数组的数据类型相同),ItVar 是它的名称,array 是数组或者可以使用其他数据结构,例如 ArrayList。如你所见,没有计数器,迭代变量迭代数组或集合的元素,而不是下标值。 当执行这样的循环时,迭代变量按顺序分配数组或集合的每个元素的值,然后执行指定的语句块(或运算符)。 注意:for-each 循环可以应用于数组和任何实现 java.lang.Iterable 接口的类。 让我们通过问候朋友来解决同样的问题,忽略陌生人(“陌生人”),但这次使用 for-each 循环。

public class ForEachExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
	//  for each loop, Java code
       for (String name : names) {
           if (name.equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("hello, " + name);
       }
   }
}
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION